투명 메모 컴포넌트 개발 한동안 "메세지를 입력하세요" 라는 부분이 TMemo 로 되어있어서 배경 그림은 무시한채 새하얀 바탕으로 생뚱맞게 방치되어왔는데, 드디어 오늘! 이리저리 투명한 메모를 구현해보기 위해서 이리저리 자료 찾아보고 그러던 도중 만들어버렸다. 컴포넌트 명칭은 TMarsTransparentMemo ㅋㅋㅋㅋ 내가 새로 만든 컴포넌트에는 모두 Mars를 붙이고 있다. 하나하나 만들어가는 재미가 솔솔하네, Programming/Delphi 2010.06.30
FizzBuzz Question 원문 : http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/ 실제로 이런 경우는 많죠. 경력이 많은 개발자라고 스스로 생각하는 사람들 중에도 아주 작은 문제조차 해결하지 못하는 사람은 많습니다. 대부분 채용과정에서 걸러져야 하지만 작은 규모의 회사에서는(아니 큰 회사라 하더라도) 기술면접이 제대로 이뤄지고 있지 못하죠. 주위의 동료에게 당장 다음과 같은 문제를 풀어보도록 해보면 어떨까요? 원문에서는 대부분의 좋은 프로그래머는 1,2분 사이에 코드를 작성해 낸다고 합니다. FizzBuzz Question 1에서 100까지 출력하는 프로그램을 작성합니다. 단, 3의 배수일 경우 "Fizz"를 출력하고 5의 배.. Programming/Delphi 2010.06.30
3DES 암/복호 1. 문자열 암호화 2. 문자열 복호화 3. 파일 암호화 3-1. 평문 3-2. 암호화된 파일 4. 파일 복호화 4-1. 복호화된 파일 Programming/Delphi 2010.06.30
Thread 정리 2 스레드 초기화 새 스레드 클래스의 초기화 코드를 작성하려면 Create 메소드를 오버라이드해야 합니 다. 스레드 클래스의 선언에 새 생성자를 추가하고 선언을 구현하는 초기화 코드를 작성 합니다. 여기서 스레드의 기본 우선 순위를 할당하고 스레드가 실행 종료될 때 자동으로 해제되어야 할지 여부를 나타낼 수 있습니다. 기본 우선 순위 할당 우선 순위는 운영 체제가 애플리케이션의 모든 스레드 중에서 CPU 시간의 일정을 정할 때 스레드가 갖는 기본 설정 수를 나타냅니다. 시간적으로 중요한 작업을 처리할 때에는 높은 우선 순위의 스레드를 사용하고 다른 작업을 수행할 때에는 낮은 우선 순위의 스레 드를 사용합니다. 스레드 객체의 우선 순위를 나타내려면 Priority 속성을 설정하십시 오. 스레드 우선 순위 tp.. Programming/Delphi 2010.06.30
Thread 정리 delphi에서 thread를 사용하기 위해서는 tthread를 상속 받아서 만들거나 CreateThread(API)를 이용하는 방법이다. thread를 만드는데 있어서 꼭 알아야 할 function(?)들... 최소한 thread를 상속받아서 뭔가를 만들려면 이거는 알아야 한다. procedure Execute; virtual; abstract; tthread를 상속받으면 execute procedure를 구현해야 한다. 실행 하고 싶은 내용을 기술하는 곳이다. project영역에 선언한다. TThreadMethod = procedure of object; procedure Synchronize(Method: TThreadMethod); overload; thread를 사용하면서 세마포어나 뮤텍스를 사.. Programming/Delphi 2010.06.30
[팁] 쓸만한 함수 2 [TMemo Component] 현재 라인번호 알아내기 메모에서 현재 Caret이 위치하고 있는 줄이 몇 번째 줄인지를 리턴한다. Label1.Caption := IntToStr(GetCurrLine(Memo1)); function GetCurrLine(Memo : TMemo) : integer; begin Result := Memo.Perform(EM_LINEFROMCHAR, Memo.SelStart, 0); end; [TMemo Component] 현재 컬럼번호 알아내기 메모에서 현재 Caret이 위치하고 있는 줄에서 몇 번째 컬럼인지를 리턴한다. Label1.Caption := IntToStr(GetCurrCul(Memo1)); function GetCurrCul(Memo : TMemo)) : in.. Programming/Delphi 2010.06.30
[팁] 쓸만한 함수 팁모음집 금주가 몇번째 주인지 어떻게 구합니까 function kcIsLeapYear( nYear: Integer ): Boolean; // 윤년을 계산하는 함수 begin Result := (nYear mod 4 = 0) and ((nYear mod 100 0) or (nYear mod 400 = 0)); end; function kcMonthDays( nMonth, nYear: Integer ): Integer; // 한달에 몇일이 있는지를 계산하는 함수 const DaysPerMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); begin Result := DaysPerMonth[nMonth]; if (n.. Programming/Delphi 2010.06.30
이미지 포맷 확인하기 이따금씩 확장자는 BMP인데 개발할 때 TBITMAP로 하면 에러가 생길 경우가 있다. 이런 경우에는 다른 포맷의 이미지를 확장자만 바꾸었을 경우 발생한다. 해당 이미지를 선택하고 "확인" 버튼을 누르면 이 포맷이 어떠한 이미지 포맷인지 알려준다. Delphi 5 Programming/Delphi 2010.06.30
enum 타입 값을 String 값으로 얻어오기 uses TypInfo; type TDeviceType = ( dtNone, dtPhone, dtPDA, dtNDA, dtMTP, dtXSync, dtMax ); GetEnumName(TypeInfo(TDeviceType), Ord(dtNDA)) ); 이렇게 할 경우 dtNDA 값이 문자열로 전달된다. 문자열에 대해 enum 값을 알아 낼 때는 GetEnumValue라는 함수를 사용하면 된다. Programming/Delphi 2010.06.30
서버에서 파일 받기 서버에서 Http 로 파일 받을 때 방법이다. procedure TForm1.DownloadProgressEvent(Sender: TDownLoadURL; Progress, ProgressMax: Cardinal; StatusCode: TURLDownloadStatus; StatusText: String; var Cancel: Boolean); begin if( (Progress Programming/Delphi 2010.06.30
문자열 파싱하기 procedure TForm1.Button1Click(Sender: TObject); var StringList : TStringList; i : Integer; begin StringList := TStringList.Create; try StringList.Delimiter := ','; StringList.StrictDelimiter := True; // 이 부분을 빼면 빈공간도 구분해버린다. StringList.DelimitedText := 'abc de ff asfas,afsb dfgfg'; for i := StringList.Count-1 downto 0 do begin Memo1.Lines.Add(StringList.Strings[i]); end; finally FreeAndNil(Strin.. Programming/Delphi 2010.06.30
델파이에서 아이폰 개발이 가능해진다? 오.. 이제 델파이로 iPhone 개발이 가능해지는건가.. 하루 빨리 출시되어서 델파이로 iPhone 개발이 가능해지면 좋을텐데, Object-C 로 개발할려니.. 문법을 잘 몰라서 많이 헤메고 있는지라 ^^; http://www.ddaily.co.kr/news/news_view.php?uid=57847 Programming/Delphi 2010.06.30
트레이 풍선 도움말 interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; {new constant definitions} const NIF_INFO = $10; NIF_MESSAGE = 1; NIF_ICON = 2; NOTIFYICON_VERSION = 3; NIF_TIP = 4; NIM_SETVERSION = $00000004; NIM_SETFOCUS = $00000003; NIIF_INFO = $00000001; NIIF_WARNING = $00000002; NIIF_ERROR = $00000003; NIN_BALLOONSHOW = WM_USER + 2; NIN_BALLOONHIDE = WM_USER + 3; NIN.. Programming/Delphi 2010.06.30
윈도우 각종 폴더 경로 얻기 // Uses에 ShlObj, ShellApi 추가 function GetFolderPath(iFolder : Integer) : String; var iID : PItemIDList; szPath : PChar; begin Result := ``; szPath := StrAlloc(MAX_PATH); if SHGetSpecialFolderLocation(Application.Handle, iFolder, iID) = NOERROR then begina SHGetPathFromIDList(iID, szPath); Result := StrPas(szPath); end; StrDispose(szPath); end; Programming/Delphi 2010.06.30
파일 사이즈(int64) -> 문자로 표시 const shlwapi32 = 'shlwapi.dll';function StrFormatByteSize(Size: int64): String;var P : array[0..255] Of WideChar;begin Result := StrFormatByteSizeW(Size, P, SizeOf(P));end;Function StrFormatByteSizeW; External shlwapi32 name 'StrFormatByteSizeW'; Programming/Delphi 2010.06.30