kkuzil.own@gmail.com

Posted
Filed under Development/Delphi

GExpert 기능 중 시간을 찍어주는 기능있다.
주석을 달때 시간을 찍어주면 언제 기록한 건지 알수 있는 기능인데 단축키는 Ctrl + Alt + A 이다.

설정에서 시간 형식과 기타 단어를 추가해 줄 수 있다.

메뉴 > GExperts > Configuration... > Editor Experts 탭 > Insert Date/Time

내가 쓰는 형식 = yy_MMdd hh:mm:ss "sunk" (문자는 따옴표로 묶어준다)

@GExperts 단축키 정보와 중복이지만 시간 형식등을 더 추가 한다.


http://sunkj81.cafe24.com/textcube/entry/Delphi-GExperts-%EC%9C%A0%EC%9A%A9%ED%95%9C-%EB%8B%A8%EC%B6%95%ED%82%A4
2013/08/08 14:52 2013/08/08 14:52
Posted
Filed under Development/etc.
네트워크 드라이브 정보는 사용계정마다 다르다.
이거때문에 시스템 권한에서 현재 사용자 권한의 네트워크 드라이브를 사용하는데 많은 고난이 있었다.

사용중인 네트워크 드라이브를 확인하는 방법은 API, 레지스트리 확인이 있다.

HKEY_CURRENT_USER\Network


하위키의 이름으로 드라이브 레터가 존재한다.
예) HKEY_CURRENT_USER\Network\E, HKEY_CURRENT_USER\Network\F

Value 값으로 "RemotePath" 값을 보면 실제 사용하는 공유 폴더 정보를 알 수 있다.

이렇게 네트워크 드라이브를 뭐뭐 쓰는지는 알 수 있지만 시스템 권한으로는 사용하기엔 많은 제약이 따른다.
2013/07/26 10:20 2013/07/26 10:20
Posted
Filed under Development/Delphi
델파이에서 WNetUseConnection()의 사용 형식은 아래와 같다.


function WNetUseConnection(hwndOwner: HWND;
  var lpNetResource: TNetResource; lpUserID: PWideChar;
  lpPassword: PWideChar; dwFlags: DWORD; lpAccessName: PWideChar;
  var lpBufferSize: DWORD; var lpResult: DWORD): DWORD;

하지만 수십번의 잡질끝에 알아낸건
lpUserID: PWideChar 와 lpPassword: PWideChar 의 위치가 바뀌었다는 것...
왜 안될까 계속 시도해 보고 생각해본 결과 혹시나 해서 바꿔 봤는데... 역시나...

WNetAddConnection2() 이거는



function WNetAddConnection2(var lpNetResource: TNetResource;
  lpPassword, lpUserName: PWideChar; dwFlags: DWORD): DWORD;

이렇게 잘 나와있다.

델파이의 이런 오류들은 필히 기록하자.
2013/07/23 16:43 2013/07/23 16:43
Posted
Filed under Development/Delphi
단축키 까먹을때마다 확인을 위해 생각나는데로 적자

Alt + Shift + U : interface, implementation 에 사용할 Unit을 쉽게 추가할 수 있게 해준다. (검색지원)
Ctrl + Alt + Z  : ':', ':=', '=' 별로 기준 정렬

Ctrl + Alt + A  : 현재 날짜/시간 찍어주기 (메뉴 > GExperts  > Configuration.. > Insert Date / TIme 에서 날짜/시간 형식 바꿀수 있음. yy_MMdd hh:mm:ss "sunk")
2013/06/25 18:03 2013/06/25 18:03
Posted
Filed under Development/Delphi
.EXE 파일의 리소스를 열고 고치고 싶어서...


LoadLibrary(..)  > FindResource() > SizeOfResource() > LoadResource() > LockResource() >
FreeLibrary() > BeginUpdateResource() > UpdateResource() > EndUpdateResource()

뭐 이런 절차로 하려고 하는데 아무리해도 UpdateResource() 여기서 적용이 안되는거다..
GetLastError()를 찍어봐도 문제가 없고...! LoadResource(), LockResource() 이걸로 리소스도 잘 가져오는데!
아놔~! 뭐가 문젠지 한참을 고민하다 보니,

LoadLibrary([Path]) > FreeLibrary() 이렇게 하고 구동한 프로그램이 종료될때까지 [Path]가 제대로 지워지지

않는 문제가 있는거다.
원인은... LoadLibrary([Path]) 이거다. 요넘은.. .

LoadLibrary([Path])  이렇게 열면... 열어서 쓰는거 까지 좋은데 FreeLibrary() 이걸로 잘(?) 안닫힌다.

이 후에 수정작업은 먹통이되버린다. (UpdateResource()등등)

.DLL만 잘 불러오게 하는 그런게(?) 있나부다.
msdn에는 .EXE에는 쓰지마라 이런말은 없고 블라블라~~

암튼, 요렇게 하면 된다.

hModule := LoadLibraryEx([Path], 0, LOAD_LIBRARY_AS_DATAFILE);

....
....
FreeLibrary(hModule)

이렇게 하면 해제 잘되서 이 후에 리소스 수정작업도 잘된다~

끝.
2012/10/04 22:10 2012/10/04 22:10