본문 바로가기
프로그래밍

TDateTime의 DecodeTime()

by ictlab 2009. 11. 2.

TDateTime에서 각각의 시간,분,초를 얻어오려면 DecodeTime() 이라는 메소드를 사용해야 한다.

함수를 쓰려면 선언을 먼저 봐야하는법..
대충 이렇게 생겼다.
void __fastcall DecodeTime(unsigned short* hour, unsigned short* min, unsigned short* sec, unsigned short* msec) const;

일단 현재 시간을 가져오는 정상적인 방법으로....

TDateTime now = Now();
unsigned short y,m,s,msec,
now.DecodeTime(&y, &m, &s, &msec);


그런데 간혹가다가 시간 분,초 필요없고 1/1000 초만 필요한 경우가 생겨서..
변수 생성해서 쓰기도 귀찮고해서 이렇게 쓴다.

unsigned short tmp,msec,
now.DecodeTime(&tmp, &tmp, &tmp, &msec);
 
그런데..
윈도우 API 중에서 대부분 포인터 주는 부분에 NULL을 넣어주면 그 부분은 아무 동작도 하지 않는 경우가 있다.
즉 리턴으로 받고 싶지 않으면 포인터에 그냥 NULL로 넣는 것이다.
그래서 이렇게 해보았다...
unsigned msec;
now.DecodeTime(NULL,NULL,NULL, &msec);


msec 단위만 필요할때... 아주  간편하게 되었다..










BUT !! 위 코드처럼 사용하면 "잘못된 연산" 뜨면서 죽는다~~~ ^^;
VCL은 API 처럼 안만드는구나.. ㅋㅋ

PS.
참.. 이건 팁도 아니구 뭔지...