본문 바로가기

운동하는 개발자/Delphi

(12)
델파이 windows10 한글 깨짐 / edit 창 한글 커서 오류 (d2codingfont) ● 발생 환경 - 델파이 2010, XE5 - 윈도우7에서는 문제없으나 윈도우10으로 사용시 문제 발생 ● 현상 위와 같이 문자열을 한글로 입력시 커서가 딴데 있을때는 정상적으로 표출됨 위와같이 커서가 해당 라인에 들어가면 커서의 위치와 괄호의 위치가 비정상적으로 표시 TMI 더보기 괄호의 위치로 추측하건데 한글도 똑같이 1바이트로 계산하여 괄도 닫는곳이 한글 글자수x칸 만큼 앞으로 당겨져 보였다 ● 문제해결 결과적으로 기본 폰트의 오류 였다 Tools-> Options 를 들어가서 Editor Options->Display탭에서 Editor font를 보면 디폴트로 Courier New가 설정되어있는데 이를 변경시켜주면 된다 나는 네이버의 D2Coding폰트가 가독성이 좋다 하여 해당폰트를 다운받았다 ..
delphi 각종 윈도우 경로 읽기 get windows path uses shlObj; function GetSpecialFolderPath(CSIDLFolder: Integer): string; var FilePath: array [0..MAX_PATH] of char; begin SHGetFolderPath(0, CSIDLFolder, 0, 0, FilePath); Result := FilePath; end; 이 함수에서 호출할 경로(CSIDL)만 원하는데로 넣어준다 예) str := GetSpecialFolderPath(CSIDL_PROGRAM_FILES) //C:\Program Files (x86) str := GetSpecialFolderPath(CSIDL_COMMON_APPDATA) //C:\ProgramData str := GetSpecialFolderP..
델파이 DBXJSON를 이용한 json 생성 / how to make json at delphi (DBXJSON) 델파이2010에선 JSON unit이 없어서 DBXJSON을 사용하여 json을 생성하는 방법입니다 uses DBXJSON; function makejson():string; var JTopObj, JObj : TJSONObject; JArr : TJSONArray; JPair : TJSONPair; i : integer; sTemp : String; begin JTopObj := TJSONObject.Create; JArr := TJSONArray.Create; for i := 1 to 3 do begin JObj := TJSONObject.Create; JObj.AddPair(TJSONPair.Create('array_index', TJSONNumber.Create( i ))); JObj.AddPai..
델파이 idhttp 에러메세지 내용 확인 / idhttp error message idhttp로 통신 중 400대 , 500의 응답코드가 올 때 단순히 에러 메세지를 수집하면 400 Bad Request 500 Internal Server Error 이런식으로만 획득 된다 postman으로 전송해보면 에러 메세지가 리턴와서 확인해보니 서버측에서 보내는 에러 메세지를 확인하는 방법이 있으며 코드는 아래와 같다 try sHttpResult := Http.Post(sUrl, tsArguments); except on E:EIdHTTPProtocolException do begin sHttpResult := E.ErrorMessage; //예) 1st parameter error //e.message //예)Bed Request //e.errorcode //예)400 end; end;
델파이 JSON String 파싱 / delphi json parsing 상당히 간단한 기능이고 자료도 제법 있는데 내 델파이 버전 탓인지 사람들이 알려주는 함수가 파라미터가 다르거나 아예 없거나.. 겨우겨우 했다 이 글은 델파이 2010 버전으로 작성되었습니다 uses DBXJSON; //필수 추가 procedure jsonparsing(jsondata : string); var JSonObject:TJSonObject; JSonPair : TJSONPair; JsonString: string; JsonKey, JsonValue : string; begin jsondata := '{"Name":"kim","age":"34"}'; //http통신으로 이와 같은 데이터를 수신했다고 가정하고 jsondata := StringReplace(jsondata, #10 , '', [rf..
델파이 중복 실행 (델파이 다중 실행 IDE 두개 켜기) @echo off cd \ cd %Temp% del *.ttr cd \ cd %Temp% set datum=%date%_%time:~3,2%-%time:~6,2% ren EditorLineEnds.ttr EditorLineEnds%datum%.ttr start "" "D:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\bds.exe" -pDelphi exit 1. 메모장 켜서 위에 내용을 복붙한다 2. 자신의 델파이 설치경로만 수정해준다 (D:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\bds.exe) 3. 적절한이름 .bat파일로 메모장을 저장한다 4. bat파일로 실행한다 (깔끔해 보이려면 아이콘을 델파이 아..
델파이 폼에서 파일 드래그앤드롭 / delphi Drag and Drop 요즘 이메일 보낼때나 구글 드라이브를 사용하여 웹 브라우저에서 파일을 업로드 할 때 파일을 간단히 끌어서 놓기만 하면 첨부가 된다 이와 같은 기능을 델파이 윈도우 폼에서 구현해보자 한다 메인폼 화면에서 파일을 해당 폼에 끌어놓으면 에디터에 경로가 찍히게 만들어보려고 한다 1. 메인 폼에서 OnCreate 이벤트에 DragAcceptFiles(Handle, True); OnClose 이벤트에 DragAcceptFiles(Handle, False); 를 각각 추가하여 드래그 허용을 해준다 (이 허용을 하고 실행시 파일을 끌어서 폼 위에 올리면 마우스포인터에 +모양이 추가로 보인다) procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction)..
delphi, lazarus 동작시간 계산 코드의 특정 부분의 동작 시간(실행시간)을 로그로 남기고 싶을 때 uses dateutils; //datetime 계산을 위한 함수 procedure workfunction; var LStartTime : TDateTime; //시작시간 LWorkTime : Int64; //동작시간 begin LStartTime := Now; // 시작시간 기록 for( 블라블라); LWorkTime := MilliSecondsBetween(Now,LStartTime); end; MilliSecondsBetween() 함수는 ms단위의 값으로 리턴을 주고 각 단위로 계산하는 함수들은 아래와 같다 Function YearsBetween(const ANow, AThen: TDateTime; AExact : Boolean =..