Ad blocker interference detected!
Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers
Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.
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.
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);
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'
(Please leave your name with your comment.)