개발자의 노트
[Delphi] 시스템 디폴트 언어 정보와 로케일 정보 얻기
소프트웨어개발/Delphi 2017. 10. 27. 17:01

시스템 디폴트 언어 ID - 한국어 : 1042 GetSystemDefaultLangID 시스템 기본 언어 - 한국어 : KOR function GetSystemDefaultLang: string; var szLang: array[0..5] of Char; begin Result := ''; GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SABBREVLANGNAME, szLang, SizeOf(szLang) - 1); Result := szLang; end; 로케일 얻기 - 한국 : 한국어(대한민국) function CurrentLocale: string; var ID: LangID; LanguageName: array[0..254] of Char; begin {read c..

[Delphi] Bin -> Int / Hex -> Bin 변환
소프트웨어개발/Delphi 2017. 10. 27. 16:52

설명은 따로 없습니다. 아래 코드를 참고하세요. function BinToInt(const Bin: string): Integer; var I, Len: Integer; begin Result := 0; Len := Length(Bin); for i := Len downto 1 do if Bin[I] = '1' then Result := Result + (1 shl (Len - I)); end; function HexToBin(const Hexadecimal: string): string; const BCD: array[0..15] of string = ('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '101..

[Delphi] Int -> Hex / Hex -> Int 변환
소프트웨어개발/Delphi 2017. 10. 27. 16:49

설명은 따로 없습니다. 아래 코드를 참고하세요. const HexChars: array[0..15] of Char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); function IntToHex(Int: Int64; IntSize: Byte): string; var n: Byte; begin Result := ''; for n := 0 to IntSize - 1 do begin Result := HexChars[Int and $F] + Result; Int := Int shr $4; end; end; function HexToInt(const Value: string): LongWord; const He..

[Delphi] byte array -> string / string -> byte array 변환
소프트웨어개발/Delphi 2017. 10. 27. 16:45

특별한 설명은 없습니다. 아래 코드를 참고하세요. type TByteArr = array of byte; function ByteToString(const Value: TByteArr): String;var I: integer; S : String; Letra: char;begin S := ''; for I := Length(Value)-1 downto 0 do begin letra := Chr(Value[I] + 48); S := letra + S; end; Result := S;end; function StrToByte(const Value: String): TByteArr;var I: integer;begin SetLength(Result, Length(Value)); for I := 0 to Le..

[델파이] 메신저 같은 프로그램의 자리비움 체크
소프트웨어개발/Delphi 2014. 5. 21. 11:00

예전에는 자리비움 (키보드/마우스를 일정시간 사용하지 않고 있는 상태) 기능을 구현하기 위해 훅 (HOOK) 을 이용한 DLL을 만들어 체크하였으나... 윈도우 2000 이후로 지원하는 GetLastInputInfo 덕분으로 여러모로 간단하게 자리비움 기능을 처리할 수 있다. uses Windows; class function GetSecondsIdle: DWORD; var LII: TLastInputInfo; begin LII.cbSize := SizeOf(TLastInputInfo); GetLastInputInfo(LII); Result := (GetTickCount - LII.dwTime) div 1000; end; 이 함수를 이용해서 컴퓨터의 유휴시간을 초로 구해서 자리비움을 구현하자. (간단하게..

Delphi에서 Chrome Browser 사용하기
소프트웨어개발/Delphi 2014. 3. 26. 15:39

델파이 기본 웹브라우저 컴포넌트는 TWebBrowser인데. 이놈이 Internet Explorer를 맵핑해놓은거다. 기존에는 델파이로 응용프로그램을 구현할 때, 내부에 웹뷰가 필요하면 이 녀석을 사용했는데.. 아무래도 표준도 잘 안지키고, 버전별로 표준 구현의 차이가 심하여.. Chrome 브라우저를 웹뷰로 사용해보기로 함. 검색을 해보니. Delphi Chromium Embedded (DCEF) 라는 놈이 있는데, 이게 DCEF 1, DCEF 3 이렇게 나눠져있더라는... DCEF 1를 진행하다 개발이 중단된 거 같고, 그걸 포크해서 DCEF 3을 다시 개발한 거 같은데.. 잘은 모르겠고... 소스를 대략 보니 DCEF 3이 완성도가 더 있는 듯.. (찾아보니 DCEF 3은 multi-process용..

[델파이] IE 핸들에서 IWebbrowser2 인터페이스 얻기
소프트웨어개발/Delphi 2014. 3. 13. 15:44

type TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam; out pObject): HRESULT; stdcall; function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT; var hInst: HWND; lRes: Cardinal; MSG: Integer; pDoc: IHTMLDocument2; ObjectFromLresult: TObjectFromLresult; begin hInst := LoadLibrary(‘Oleacc.dll’); @ObjectFromLresult := GetProcAddress(hInst, ‘ObjectFromLresu..

[델파이] 델파이 7에서 SOAP 사용시 DEP 에러에 대한 조치
소프트웨어개발/Delphi 2014. 3. 13. 15:41

델파이 7에서 SOAP 방식으로 닷넷서비스와 통신을 하는 프로그램을 만들었는데요. 비스타에서 에러가 나길래 뜯어보니.. SOAP 함수 호출시 Access violation 이 납니다. 비스타에서만 뭔가가 안될 경우엔 우선적으로 DEP 쪽을 확인해보는데.. 역시나 DEP 문제더군요. DEP 가 비스타만의 문제는 아니지만 비스타에서는 기본적으로 모든 프로그램에 DEP 가 활성화되어있다보니 하드웨어가 DEP를 지원만 한다면 프로그램이 제대로 실행안되는 경우가 발생합니다. 외부 컴포넌트를 쓸 경우에도 그렇고.. 결론적으로 델파이 7에 기본적으로 있는 Rio.pas 가 원인이었고.. 구글을 통해 해결책을 찾았습니다. http://groups.google.com/group/borland.public.delphi.w..