Hey Leute,
ich suche nach einer Möglichkeit alle Werte und die entsprechenden Strings eines sparse Enums zu ermitteln. Hintergrund: Ich lese über die RTTI die published Properties einer Klasse aus und möchte dann die Typen und Werte anzeigen (ähnlich wie das der ObjectInspector auch macht). Bei sparse Enums hab ich aber das Problem das GetEnumName nicht funktioniert. Ich dachte mir vlt kann man die Implementierung von ReadStr und WriteStr irgendwie dafür nutzen. Also hab ich mich auf die Suche danach gemacht. Ich find aber keine Source-Files für die beiden Methoden. Weiß jmd wo ich mir die mal ansehen kann, oder hat vlt eine andere Lösung für mein Problem?
MfG Bergmann.
Sparse Enums To String
Re: Sparse Enums To String
Evtl. hilft das dir weiter? Allgemein geht es leider nicht, da für ein Sparse Enum kein TypeInfo() anwendbar ist:
[Edit]
Code: Alles auswählen
program Project1;
type
TSparseEnum = (a = 1, b = 4, c = 9);
function GetSparseEnumName(SparseEnum: TSparseEnum): String;
begin
WriteStr(Result, SparseEnum);
end;
var
aSparseEnum: TSparseEnum;
begin
aSparseEnum := b;
WriteLn(GetSparseEnumName(aSparseEnum), ' is ', Ord(aSparseEnum));
end.
Da es eine Compiler-Routine ist, wird es vermutlich nichts helfen. Ausgewertet wird WriteStr (Compiler-Internal-Function: in_writestr_x) in pexpr.pas.Bergmann89 hat geschrieben:Ich dachte mir vlt kann man die Implementierung von ReadStr und WriteStr irgendwie dafür nutzen. Also hab ich mich auf die Suche danach gemacht. Ich find aber keine Source-Files für die beiden Methoden.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 98
- Registriert: Di 15. Nov 2011, 11:36
Re: Sparse Enums To String
Hey,
ich muss das Thema nochmal ausgraben. Die Lösung von Michl geht so leider nicht, da ich ja nur die TypeInfo von meinem Enum habe, aber nicht das Enum selbst. Ich suche also eine Möglichkeit die korrekten String <> Integer Werte für ein Sparse Enum mit Hilfe seiner TypeInfo zu ermitteln.
MfG Bergmann
ich muss das Thema nochmal ausgraben. Die Lösung von Michl geht so leider nicht, da ich ja nur die TypeInfo von meinem Enum habe, aber nicht das Enum selbst. Ich suche also eine Möglichkeit die korrekten String <> Integer Werte für ein Sparse Enum mit Hilfe seiner TypeInfo zu ermitteln.
MfG Bergmann