Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Enumerated Values von einem Typ auslesen?


TmpDir - Mi 22.03.06 21:57
Titel: Enumerated Values von einem Typ auslesen?
Hi,

ich wollte gerne in einem Modul alle möglichen Werte eines Enumerated Typs in einer Listbox darstellen. (So wie beim Designtime Property Editor die Dropdown Liste).

Wie kann man also die Standard Property Editoren dafür zweckentfremden?

mfg


BenBE - Mi 22.03.06 22:28

Dazu brauchst Du die Typinfo dieses Enum-Typs.

Ein Beispiel, wie das geht, gibt's in der OIncProcs.pas [http://viewcvs.omorphia.de/omorphia/library/source/OIncProcs.pas] von Omorphia [http://www.omorphia.de/]:


Delphi-Quelltext
1:
Function EnumValueToStr(AValue: Integer; ATypeInfo: PTypeInfo): String;                    


Aufgerufen wird die Funktion so hier:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
    S: String;
    E: SomeFooEnum;
begin
    S := EnumValueToStr(Ord(E), TypeInfo(SomeFooEnum));
end;


Wie das für alle Elemente des Typs geht, kannst Du Dir sicherlich aus besagtem Source entnehmen.

MfG,
BenBE.


TmpDir - Mi 22.03.06 23:16

Erstmal Danke für die schnelle Antwort.

Kann es sein das bei einer Delphi 6 Pro Version die DCU/PAS Datei "TypeInfo" nicht dabei ist???

Ich kann nämlich in meiner uses clause typeinfo nicht deklarieren. Und eine entsprechende Datei ist nicht vorhanden.

mfg


BenBE - Mi 22.03.06 23:29

Versuch's mal mit der Unit TypInfo (ohne das E).

Das war in der Unit kein Schreibfehler, sondern ist so ;-) Hängt mit Namenskonflikten zusammen, weil TypeInfo eine Funktion der Compiler-Magic ist. Der Source sollte unter D6 (mit unseren Units) fehlerfrei laufen; wenn nicht, einfach bescheidgeben.


TmpDir - Do 23.03.06 00:16

do :autsch: until :think:


jetzt geht das.