Runtime Type Information (RTTI)
From Lazarus wiki
RTTI can be utilized to obtain a number of meta information in a Pascal application.
Converting a enumerated type to a string
One can use RTTI to obtain a string from a enumerated type.
<delphi> type
TProgrammerType = (tpDelphi, tpVisualC, tpVB, tpJava) ;
uses TypInfo;
var
s: string;
begin
s := GetEnumName(TypeInfo(TProgrammerType), integer(tpDelphi)); // Here s = 'tpDelphi'
</delphi>