Casting Enums zu Pointer
oder TObject
und zurück funktioniert gut. Wenn Ihre Delphi-Version Generika unterstützt, verwenden Sie Tims Vorschlag, es ist besser. Alternativ können Sie ein dynamisches Array ( array of TTestEnum
) verwenden oder eine Wrapper-Klasse um das dynamische Array erstellen - so werden generische Listen in generischen Delphi-Versionen implementiert.
Hier ist eine kurze Konsolen-Demo, die TList
verwendet, nicht TObjectList
, weil TList
weniger Annahmen über die enthaltenen Elemente macht.
Diese Antwort kann helfen. Es geht darum, Datensätze in einem TList zu speichern, indem ein Nachkomme erstellt wird, um die gesamte Typumwandlung zu vermeiden. Beachten Sie, dass Sie sich keine Gedanken darüber machen müssen, wie Speicher für die Enum-Werte zugewiesen / freigegeben wird, da es sich um einfache ordinale Typen handelt, die in den Raum eines Zeigers passen.
Beachten Sie, dass Sie auf Pointer
tippen müssen, wenn Add
auf die Liste verweist und beim Zurücklesen möglicherweise als YourEnum (Ganzzahl (Liste [Index])) eingeben muss. Der Code, mit dem ich verlinkt habe, zeigt jedoch, wie man beide in der Nachkommenklasse behandelt, so dass es nur einmal pro Weg gemacht wird, und das ist in der Klassenimplementierung vergraben.
Tags und Links delphi list enums delphi-2007