AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi String im Wertebereich eines Aufzählungstypen

String im Wertebereich eines Aufzählungstypen

Ein Thema von TheAn00bis · begonnen am 28. Jun 2006 · letzter Beitrag vom 29. Jun 2006
Antwort Antwort
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#1

String im Wertebereich eines Aufzählungstypen

  Alt 28. Jun 2006, 18:38
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:
type test = (atest, btest);

//...

function xyz(pString: String): boolean;
begin
   if (pString = 'aTest') or (pString = 'bTest') then result:=true
   else result := false;
end;
Geht das auch einfacher?
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#2

Re: String im Wertebereich eines Aufzählungstypen

  Alt 28. Jun 2006, 18:39
Nein, da die Werte des Aufzähungstypen ja keine Strings, sondern nur Integer-Konstanten (oder so was ähnliches) sind.´

Zitat:
if (pString = 'aTest') or (pString = 'bTest') then result:=true
else result := false;
einfacher:
result:=(pstring='atest') or (pstring='btest'); Bei Vergleichen oder logischen Operatoren kommt schon ein Boolean raus.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: String im Wertebereich eines Aufzählungstypen

  Alt 28. Jun 2006, 18:41
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
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#4

Re: String im Wertebereich eines Aufzählungstypen

  Alt 28. Jun 2006, 18:46
aber das ist doch nicht "sauber"
Oder zumindest wurde es nicht so von der Delphi-Language beabsichtigt.

*mich geschlagen geb*
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#5

Re: String im Wertebereich eines Aufzählungstypen

  Alt 28. Jun 2006, 19:51
Danke, negaH!

Mit

GetEnumName(TypeInfo(ttest),i); ist das wunderbar.

Edit: Wobei das mit GetEnumValue() hier sogar noch besser zu lösen ist.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: String im Wertebereich eines Aufzählungstypen

  Alt 29. Jun 2006, 16:07
Zitat:
ber das ist doch nicht "sauber"
Oder zumindest wurde es nicht so von der Delphi-Language beabsichtigt.
Doch absolut sauber und absolut so beabsichtigt. Das Besondere an der VCL ist es das sie zur Designzeit und Laufzeit über zb. den OI oder Klassenexplorer dir Unterstützung bieten kann. Das war das Argument eines RAD Systems. Und um das zu können gibts die RTTI durch den Compiler erzeugt und die Schnittstelle zu dieser RTTI ist die Unit TypInfo. Eine DFM zb. speichert ja auch eine ENUM Poperty einer Komponente im Klartext, oder im OI kannst du eine solche ENUM Property im Klartext zb. bei .BorderIcons = [biMaximize, biMinimize] einstellen oder ? Nun exakt das wird über die RTTIs und Unit TypInfo gemacht, egal ob zur Designzeit oder Laufzeit. Denn zu Laufzeit muß ja ein Formular als DFM Resource geladen werden und in diesem Moment benötigt der VCL Code wiederum diese ENUM Bezeichner im Klartext. (ENUMs == SETs == Mengen)

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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf