![]() |
String im Wertebereich eines Aufzählungstypen
Hey,
Wenn ich prüfen möchte, ob der Inhalt eines Strings im Wertebereich eines Aufzählungstypen ist, geht das dann nur über Fallunterscheidungen? Beispiel: So würde ich es im Moment machen:
Delphi-Quellcode:
Geht das auch einfacher?
type test = (atest, btest);
//... function xyz(pString: String): boolean; begin if (pString = 'aTest') or (pString = 'bTest') then result:=true else result := false; end; |
Re: String im Wertebereich eines Aufzählungstypen
Nein, da die Werte des Aufzähungstypen ja keine Strings, sondern nur Integer-Konstanten (oder so was ähnliches) sind.´
Zitat:
Delphi-Quellcode:
Bei Vergleichen oder logischen Operatoren kommt schon ein Boolean raus.
result:=(pstring='atest') or (pstring='btest');
|
Re: String im Wertebereich eines Aufzählungstypen
Du kannst die Funtionen aus Unit TypInfo dazu benutzen. Damit greifst du dann zur Laufzeit auf exakt die Typdefinitionen deines Sources zu. Der Compiler speichert nämlich als RTTI alle deine Strings deines Enums.
Schau dir einfach mal Unit TypInfo.pas genauer an. [edit] ichbins, war da wohl schneller. Und aus dem kategorischen NEIN wird ein definitives JA ;) [/edit] Gruß Hagen |
Re: String im Wertebereich eines Aufzählungstypen
aber das ist doch nicht "sauber" ;)
Oder zumindest wurde es nicht so von der Delphi-Language beabsichtigt. *mich geschlagen geb* |
Re: String im Wertebereich eines Aufzählungstypen
Danke, negaH!
Mit
Delphi-Quellcode:
ist das wunderbar. :)
GetEnumName(TypeInfo(ttest),i);
Edit: Wobei das mit GetEnumValue() hier sogar noch besser zu lösen ist. |
Re: String im Wertebereich eines Aufzählungstypen
Zitat:
Ergo: Borland hat das mit voller Absicht so konstruiert, für seine und auch für unsere Zwecke ;) Die reguläre Schnittstelle zur RTTI ist Unit TypInfo.pas. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz