Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Aufzählungstyp in string Umwandeln

  Alt 30. Okt 2012, 08:35
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. )
Uli Gerhardt
  Mit Zitat antworten Zitat