AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String zu Typ

Ein Thema von SimonRap · begonnen am 7. Mär 2010 · letzter Beitrag vom 11. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#1

String zu Typ

  Alt 7. Mär 2010, 16:48
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...

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
Simon
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: String zu Typ

  Alt 7. Mär 2010, 16:50
Verwende doch einfach den ItemIndex der Combobox. Dann brauchst du keine aufwändige Stringumwandlung.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#3

Re: String zu Typ

  Alt 7. Mär 2010, 16:55
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^^
Simon
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: String zu Typ

  Alt 7. Mär 2010, 16:58
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:
deineVariable=TIrgendeinTyp(Combobox.ItemIndex); Der Quelltext ist nicht getestet aber so in etwa sollte das funktionieren.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#5

Re: String zu Typ

  Alt 7. Mär 2010, 17:03
ahhhh....
nich nur dass es funktioniert, ich habs sogar bissel verstanden^^
thx thx thx thx thx thx usw.^^
Simon
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#6

Re: String zu Typ

  Alt 7. Mär 2010, 17:06
Nur mal so aus Interesse:
Wie würde das denn mit der
Zitat von SirThornberry:
aufwändigen Stringumwandlung
gehen?
Simon
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#7

Re: String zu Typ

  Alt 7. Mär 2010, 17:16
Zitat von SimonRap:
Nur mal so aus Interesse:
Wie würde das denn mit der
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;
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#8

Re: String zu Typ

  Alt 7. Mär 2010, 17:19
variante nr. 1 is eindeutig die kürzere, ich bleib lieber bei der^^
aber trotzdem thx fürs erklären
Simon
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: String zu Typ

  Alt 7. Mär 2010, 17:36
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.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: String zu Typ

  Alt 7. Mär 2010, 17:54
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:29 Uhr.
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