Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String zu Typ (https://www.delphipraxis.net/148744-string-zu-typ.html)

SimonRap 7. Mär 2010 16:48


String zu Typ
 
Hi Leute,
ich bins schonwieder^^

Ich hab folgendes allgemeines Problem:
Ich hab erstma:

Delphi-Quellcode:
Type
TIrgendeinTyp=(Typ1,Typ2);
...
VAR
MeinTyp:TIrgendeinTyp;
...
Jetzt hab ich ne Combobox, die als Items (TStrings glaub ich) nur 'Typ1' und 'Typ2' hat (Style is csDropDownList also kann man die als user net ändern!).
Ich will jetzt aus dieser Combobox das ausgewählte (STRING) als mein Typ (MeinTyp) haben...

Delphi-Quellcode:
MeinTyp:=combobox1.text;
geht net, sind ja verschiedene Typen...
Jetzt meine Frage:
kann man ir-wie ne Typenumwandlung oda so machen, damit das so klappt? (So was wie StrToMeintyp^^)
Bitte nich meckern, dass ich so was einfaches nich hinkriege... ich hab nich wirklich Ahnung von Programmieren ;)
Thx schonma im voraus^^

mfg simon

SirThornberry 7. Mär 2010 16:50

Re: String zu Typ
 
Verwende doch einfach den ItemIndex der Combobox. Dann brauchst du keine aufwändige Stringumwandlung.

SimonRap 7. Mär 2010 16:55

Re: String zu Typ
 
Zitat:

Zitat von SimonRap
Bitte nich meckern, dass ich so was einfaches nich hinkriege... ich hab nich wirklich Ahnung von Programmieren ;)

Ok... WAS?^^

Also der Index is doch INTEGER, check ich net wirklich, wie ich das machen soll

Bitte ma für ganz doofe^^

SirThornberry 7. Mär 2010 16:58

Re: String zu Typ
 
Dein TIrgendeinTyp ist ein Enum was intern (im Speicher) nichts anderes ist als eine Zahl.
In deinem Beispiel ist also Typ1=0 und Typ2=1 (enums fangen, sofern nicht anders angegeben, immer bei 0 an)
Wenn jetzt in der Combobox also der erste Eintrag (also eigentlich der nullte) gewählt wurde, so ist ItemIndex=0 und somit wäre das Typ1

Also:
Delphi-Quellcode:
deineVariable=TIrgendeinTyp(Combobox.ItemIndex);
Der Quelltext ist nicht getestet aber so in etwa sollte das funktionieren.

SimonRap 7. Mär 2010 17:03

Re: String zu Typ
 
ahhhh....
nich nur dass es funktioniert, ich habs sogar bissel verstanden^^
thx thx thx thx thx thx usw.^^

SimonRap 7. Mär 2010 17:06

Re: String zu Typ
 
Nur mal so aus Interesse:
Wie würde das denn mit der
Zitat:

Zitat von SirThornberry
aufwändigen Stringumwandlung

gehen?

Panthrax 7. Mär 2010 17:16

Re: String zu Typ
 
Zitat:

Zitat von SimonRap
Nur mal so aus Interesse:
Wie würde das denn mit der
Zitat:

Zitat von SirThornberry
aufwändigen Stringumwandlung

gehen?

So:
Delphi-Quellcode:
uses
  TypInfo;

type
  TEnum = (enEins, enZwei, enDrei);

var
  Value: TEnum;
  S: String;
 
begin
  Value := enZwei;
  S := GetEnumName(TypeInfo(TEnum), Integer(Value));
  WriteLn(S);
  Value := GetEnumValue(TypeInfo(TEnum), S); // nur um es zu zeigen...
  WriteLn(Value);
end;

SimonRap 7. Mär 2010 17:19

Re: String zu Typ
 
variante nr. 1 is eindeutig die kürzere, ich bleib lieber bei der^^
aber trotzdem thx fürs erklären :thumb:

Panthrax 7. Mär 2010 17:36

Re: String zu Typ
 
Delphi-Quellcode:
VariableDeinesTyps := TDeinTyp(GetEnumValue(TypeInfo(TDeinTyp), Stringvariable));
Ist nicht wirklich länger!? Allein mit einer harten Typumwandlung bist Du darauf angewiesen, dass der Eintragsindex die Deklarationsreihenfolge ausdrückt; mit GetEnumValue wird Dir das nicht auf die Füße fallen.

Teile und herrsche.

SirThornberry 7. Mär 2010 17:54

Re: String zu Typ
 
da hat Panthrax recht. Vorteil vom direkten Cast ist allerdings das in der Combobox nicht die gleichen Bezeichnungen stehen müssen, sondern für den Menschen verständlichere Bezeichnungen gewählt werden können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz