Dazu eine Frage: Der Parameter von TypeInfo ist laut
Doku und Programmierhilfe vom Typ TypeIdentifier. Wenn ich diesen Typen verwenden möchte meldet mir der Compiler Undeklarierter Bezeichner. Wieso und was muss ich anders machen um sowas zu realisieren?
Delphi-Quellcode:
function EnumeratorToString(AEnumType: TypeIdentifier; const AEnum): String;
begin
Result := TypInfo.GetEnumName(TypInfo.TypeInfo(AEnumType), Ord(AEnum));
end;
TypeInfo ist keine "echte" Funktion, sondern Compiler magic. Du wirst wohl oder übel ein PTypeInfo als Parameter deklarieren müssen, genau wie bei GetEnumName:
function GetEnumName(TypeInfo: PTypeInfo; Value: Integer): string;
Also so:
Delphi-Quellcode:
function EnumeratorToString(ATypeInfo: PTypeInfo; const AEnum): string;
begin
Result := TypInfo.GetEnumName(ATypeInfo, Integer(AEnum));
end;
Aber dann lohnt sich die Wrapper-Funktion eigentlich auch gar nicht mehr. (Falls sie überhaupt funktioniert - hab's nicht getestet. Könnte nämlich sein, dass das mit dem untypisierten AEnum so nicht hinhaut. Aber kannst ja mal testen mit Enum-Typen unterschiedlicher Größe.
)