enum Value {vlOne, vlTwo, vlThree};
Value value = 1;
이경우 value 의 값에 따라 "vlTwo" 가 필요한 경우가 있다.
이때 다음처럼 사용하면된다.
System::Typinfo::GetEnumName(__delphirtti(TType), Value);
__delphirtti 에 VCL 타입만 적용 가능한 하위버전의 개발툴에서는 다음과 같이 사용하면 된다.
(2007 까지는 VCL 타입만 가능한 것을 확인하였고, XE4 이후는 enum 도 가능한 것을 확인하였다. 그 사이 버전은 모르겠다.)
#define MakeEnumHelper(T, C) \
class C : public TObject { \
public: \
static String __fastcall GetEnumName(int V) { \
return Typinfo::GetEnumName(*Typinfo::GetPropInfo(__typeinfo(C), "P")->PropType, V);\
} \
__published: \
__property T P = {default = 0}; \
};
사용예)
MakeEnumHelper(TType, TTypeHelper);
ShowMessage(TTypeHelper::GetEnumName(Value));
'Windows > RAD Studio' 카테고리의 다른 글
[BCB] 관리자 권한 확인 (0) | 2013.07.09 |
---|---|
[BAT] 관리자 권한 확인 (0) | 2013.07.09 |
수학함수로 숫자 길이 구하기 (0) | 2013.01.22 |
모니터 개수 변경으로 인해 화면 밖으로 벗어난 화면 옮기기 (0) | 2012.08.08 |
[BCB] cocoa framework 의 retain 흉내내기 (0) | 2012.07.20 |