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));


+ Recent posts