Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#1

Enumerationen zu Symbolen auflösen

  Alt 4. Sep 2003, 14:02
Hi Leute!

Folgendes Problem:
Es gibt eine Enumeration (irgendwas zwischn 180 und 220 Werten).
Werte aus der Enumeration werden innerhalb des Delphi-Quelltextes ja anhand des Namen identifiziert.

Beispiel Definition:
Delphi-Quellcode:
myPrinterState = (
   prnStateReady,         // ready to print
   prnStateBusy,         // just printing
   prnStateFinished,      // printing finished
   prnStateChanging      // changing output direction
);
Beispiel Abfrage:
Delphi-Quellcode:
if Printer.currentState = prnStateReady then
   Printer.print;
Das ist ja beim Coden schön und gut, jedoch gibt es die States zur Laufzeit nur noch als Byte-Werte: die Namen gehen beim Compilieren irgendwo flöten.

Soweit ich weiss gibt es aber eine Möglichkeit irgendwie über die RTTI (Run Time Type Information) an die Namen zu kommen - auch zur Laufzeit.

Ziel ist es, die Namen einer Enumeration zur Laufzeit zu erhalten und z.B. in eine Listbox zu stecken, damit ich dem Benutzer nicht den Index der Enumeration anbieten muss.

In Hinblick auf die Wiederverwendbarkeit möchte ich aber auch nicht hergehen und ein array of string mit über 200 Werten hardcoden, die die gleichen Indices hat. Das finde ich extrem unsauber gelöst.

Habt Ihr eine Idee, wie ich an diese Informationen komme? Unter anderem auch, wie ich zur Laufzeit an die Anzahl der Werte in der Enumeration komme?

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat