
Unit[]
Description[]
GetEnumName is a function to get the string representation of the ordinal value
The first parameter (TypeInfo: PTypeInfo) is a pointer to the typeinfo of the enumeration type.
The second parameter (Value: Integer) is the ordinal value of the enumeration type.
The result is the enumeration value name in string form.
Technical Comments[]
Be aware that type information will not be available when the enumeration is given non-contiguous or out-of-order ordinal values. The lowest value in the enumeration must also be zero; i.e. ordinal values can only match the values the enumeration would have by default.
With the enumeration below it's not possible to use GetEnumValue, and TypeInfo(TTestType) will result in 'E2134 Type 'TTestType' has no type info':
type TTestType = (ttTest1 = 2, ttTest2 = 4, ttTestUnknown = 6);
However, the following will work as expected:
type TTestType = (ttTest1 = 0, ttTest2 = 1, ttTestUnknown = 2);
Examples[]
Name by integer constant
type TTestType = (ttTest1, ttTest2, ttTestUnknown); ... ShowMessage(GetEnumName(TypeInfo(TTestType), 2)); //will show 'ttTestUnknown'
Name through variable values, you need to typecast to an integer.
type TTestType = (ttTest1, ttTest2, ttTestUnknown); var MyTestType: TTestType; ... MyTestType:= ttTestUnknown; ShowMessage(GetEnumName(TypeInfo(TTestType), Integer(MyTestType))); //will show 'ttTestUnknown'
See Also[]
User Comments/Tips[]
(Please leave your name with your comment.)
