반응형

델파이 26

[Delphi] WMI(Windows Management Instrumentation) 사용하기에 앞서

예전에 WMI(Windows Management Instrumentation)를 사용해서 실무프로젝트를 진행했던 일이 있습니다. 대략 2~3년전에 했던 것으로 기억을 하는데 당시만해도 WMI를 다루는데는 문제가 없을거라 느껴졌다가 근래에 와서 다시 WMI를 사용할 일이 있어서 보는데 예전에 했던것이 아무것도 기억이 안나네요. 대략적으로라도 정리만 해놨더라면 다시 처음부터 알아보는 일이 없었을텐데.. 프로그래머에게 있어서 자신이 했던 기술에 대해서는 꼭 문서로 남겨서 나중에 필요할 때 꺼내서 볼 수 있는 메모의 스킬은 꼭 필요한 것 같습니다. WMI(Windows Management Instrumentation) 개요WMI(Windows Management Instrumentation)는 엔터프라이즈 네트..

Programming/Delphi 2015.01.28

[다이나믹스킨] 자식폼을 최소화할 때 태스크바로 내리기

Version 11.60 자식폼을 최소화 했을 경우에 태스크바로 내려가지 않고 좌측 하단으로 내려간다 -_-; 외국에서는 저렇게 사용하는지, 아니면 MDI 환경을 고려한 것인지는 몰라도.. 나는 여간 신경쓰이고 못마땅하다 ㅋㅋㅋㅋㅋ 소스 붙잡고 엎어치기 몇 번 한 결과.. TspDynamicSkinForm 컴포넌트의 MinimizeDefault 를 True로 바꿔주면 된다. 기본적으로 컴포넌트가 생성이 될 때 False 로 셋팅을 하기 때문에 좌측 하단으로 내려가게 된다. 자.. 이제 Form의 Create의 부분에서 TspDynamicSkinForm 컴포넌트의 MinimizeDefault 속성을 True로 바꿔보자. 아차! TspDynamicSkinForm 컴포넌트를 사용해서 창을 띄웠을 경우 자식폼은..

Programming/Delphi 2011.07.06

[다이나믹스킨] 메인창이 뒤로 갔을 경우 잔상이 남을 때

Version 11.60 TspDynamicSkinForm 컴포넌트를 사용해서 다중폼을 만들었을 경우에, 메인폼이 프로그램에서 생성한 다른 폼 뒤로 갈 경우 아래와 같은 잔상(?)이 생긴다. 아.. 정말 짜증난다. 워낙 영어랑 친하지도 않아서 제작사에 메일을 보내서 알아볼 수도 없고... 어떻게 어떻게 소스타고 들어가서 확인해 본 결과.. 프로젝트 소스에서 Application.MainFormOnTaskbar 를 False 로 바꿔주거나 주석처리(기본값이 False) 해주면 된다. program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; {$R *.res} begin Application.Initial..

Programming/Delphi 2011.07.06

폼이 없는 unit 에서 초기화방법

프로그래밍을 하다보면 자주 사용하는 함수나 폼이 없는 unit를 생성해서 초기화를 해야 할 경우가 있다. unit에 프로시저나 함수를 한 개 만들어서 초기화 하는 경우도 있겠지만.. 나 같은 경우 아래와 같이 사용한다. unit Unit1; interface uses Classes; var TestStringList : TStringList; implementation initialization TestStringList := TStringList.Create; finalization FreeAndNil(TestStringList); end. 맨 아래 initialization 에서 초기화를 하고, finalization 에서 메모리를 반납한다. 참 쉽죠잉~?

Programming/Delphi 2011.07.05

현재 사용중인 익스플로러 버전 확인하기

현재 사용중인 익스플로러 버전을 확인하는 함수이다. 레지스트리를 사용하기 때문에 비스타 혹은 윈도우7에서 사용할 경우에는 UAC 권한을 상승시켜서 봐야한다. 또 소스를 보면 알겠지만 Major 버전만 가져오는것이지만, 필요에 따라 바꿔서 쓰자. function ExplorerVerCheck : Integer; var Reg : TRegistry; Buffer : String; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('SOFTWARE\Microsoft\Internet Explorer', False); Buffer := Copy(Reg.ReadString('Version'), 1, 1); Result ..

Programming/Delphi 2011.07.05

유효한 파일명인지 체크

파일명에는 들어가서는 안 될 문자가 몇 개 있다. 1. \ 2. / 3. : 4. * 5. ? 6. " 7. 9. | 물론 탐색기같은 곳에서 저런 문자를 쓰면 친절하게 알려주지면, 소스내에서 코딩을 할 때 무심코 저런 문자를 쓰거나, 날짜 형식(14:32) 같은 것을 파일명에 포함해버리면 에러가 난다. 예외처리를 잘 해두면 원인을 파악하는데 빠르지만, 그렇지 않을 경우에는 헤메는 경우가 있.. (나만 그랬나? -_-;) 아래와 같은 함수로 파일명을 체크한 후에 안전하게 저장을 하면 끗~ function FileNameValidCheck(const FileName: String) : Boolean; var i : Integer; begin Result := True; i := GetFileAt..

Programming/Delphi 2011.07.05

파일을 폼으로 Drag&Drop 하기

탐색기 같은 곳에서 파일을 Drag&Drop 하여 폼에 올리고 싶은 경우에는 아래와 같이 하면 된다. // uses 절에 ShellAPI 를 추가하고, FormCreate 같은 곳에 아래와 같은 코드를 추가한다. DragAcceptFiles(Handle, True); // 그리고 적당한 곳에 파일이 Drag&Drop 되었을 때 받을 이벤트를 추가한다. procedure WMDropFiles(var Msg: TMessage); message WM_DROPFILES; 위와 같은 작업이 반드시 선행되어져야 한다. procedure TForm1.WMDropFiles(var Msg: TMessage); var DropCnt : Integer; hDropFile : THandle; FileName : array[0..

Programming/Delphi 2011.07.05

델파이 디버깅시 시스템 다운이 될 때

집에서의 개발환경은 아래와 같다. 데스크탑 : 윈도우7 64bit 프로페셔널 K, 델파이 2007, 델파이 2010 노트북 : 윈도우 XP 프로페셔널 SP3, 델파이 2007 그간 디버깅 할 때 아무런 문제가 없었는데 사무실 컴퓨터를 새걸로 바꿨다. 정확히 말하면 바꿔주셨다 ㅋㅋㅋ 환경은 윈도우 XP 홈에디션 + 델파이 2007 이다. 헌데 어느순간부터인지.. 첨부터 그랬는지는 모르겠지만, 자꾸 디버깅할 때 컴퓨터가 먹통이 되어버려서 전원을 껏다 켜야 했다. 아.. 정말 짜증난다. -_-; 이대로 도저히 안되겠다 싶어 검색을 해봤는데 역시나 방법이 있었다. "고급 텍스트 서비스 사용 안함" 에 체크를 해주고 적용을 한다. 하지만.. 저렇게 하면 정작 델파이에서 한글이 안먹힌다는;;; 어쨋든 저렇게 해서 ..

Programming/Delphi 2011.07.04

[Local DB] NexusDB

원래 SQLite 를 사용하려고 검색하다가 우연히 NexusDB를 알게 되었다. 파이어버드니 SQLite니 배포시에는 반드시 dll을 같이 배포해야 하는데 이 NexusDB는 배포할 때 다른 것이 필요가 없다. 델파이로 만들어 졌다고 하는데 델파이에서 사용하기에는 딱인거 같다. 도움말도 잘 되어있고, 자체적으로 엔터프라이즈 관리자까지 제공해주기 때문에 뭐하나 흠잡힐데가 없다. 단점은 더 사용하면서 봐야겠지만, 매우 만족임 ㅎㅎㅎ 거기다가 라이센스는 개발자용은 공짜다. dcu만 제공되고 source는 제공되지 않는다. 단, 구매를 할 경우에는 source가 제공된다. 이건 뭐... 좋은거임 ㅋㅋ http://www.nexusdb.com/support/ 자세한 사용법 찾으려고 고생하지 마시길.... 도움말 ..

Programming/Delphi 2011.01.12

E2220:Never-build package '%s' requires always-build package '%s'

델파이 컴포넌트를 설치하고 나서 해당 컴포넌트를 사용한 프로젝트를 컴파일했을 때 위와 같은 에러가 날 때가 있다. 구글신에게 물으니 바로 답이 나오더라. 시키는데로 하니 정상적으로 컴파일 잘 됨. 해답은 아래의 링크 http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/cm_nobuild_requires_xml.html

Programming/Delphi 2011.01.11
반응형