Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typ in String umwandeln (https://www.delphipraxis.net/114691-typ-string-umwandeln.html)

Baeuerle 29. Mai 2008 15:16


Typ in String umwandeln
 
hallo,

ich habe folgenden typ und möchte diesen nun in einen string konvertieren (OHNE case) damit ich diesen in eine XML Datei schreiben kann.

Und wie lese ich das wieder aus wenn ich einen String habe der x den entsprechenden Wert zuweisen soll???

Delphi-Quellcode:
TFilterKinds =
    (ftNone, ftInclusive, ftExclusive);

var x: TFilterKinds;
// so soll es nicht sein da zu viel code
case x of
 ftnone:      Write('bla');
 ftInclusive: Write('bla 1');
 ftExclusive: Write('bla 2');
 end;
// So irgendwie dachte ich mir das
write(x);
thx

FAlter 29. Mai 2008 15:20

Re: Typ in String umwandeln
 
Hi,

die Umwandlung geht auch über eine Array-Konstante. Zurück wirds wohl nur über If-Then gehen.

Delphi-Quellcode:
type
  TMyType = (myA, myB, myC);

const
  MyTypeToStr: array[myA..myC] of String = ('myA', 'myB', 'myC');

var
  X: TMyType;

...

write(MyTypeToStr[X]));
Mfg
FAlter

Baeuerle 29. Mai 2008 15:22

Re: Typ in String umwandeln
 
warum geht das ganze z.b. mit IXMLNode.NodeValue = OleVariant

Die kann beliebige werte annehmen und auch wieder zuweisen

Neutral General 29. Mai 2008 15:28

Re: Typ in String umwandeln
 
Hi,

Ich glaube du kannst diese Strings mit der RTTI herausbekommen. Wie genau, weiß ich aber auch nicht auswendig.

Gruß
Neutral General

Apollonius 29. Mai 2008 15:32

Re: Typ in String umwandeln
 
In diesem Fall ist die Unit TypInfo dein Freund, insbesondere die Funktionen GetEnumName und GetEnumValue.

rollstuhlfahrer 29. Mai 2008 15:48

Re: Typ in String umwandeln
 
HI,

ansonsten kannst du den aktuellen Wert mit Ord() erhalten. Wie du aus dem Integer wieder deinen Typ bekommst, weiß ich nicht. Das kannst du aber mit Case oder Inc/Dec versuchen.

Bernhard

FAlter 29. Mai 2008 15:51

Re: Typ in String umwandeln
 
Hi,

Zitat:

Zitat von rollstuhlfahrer
Wie du aus dem Integer wieder deinen Typ bekommst, weiß ich nicht.

Einfach ein Typecast. Größe beachten! Ord nimmt einem diese Arbeit ab, entspricht Typecast nach Byte/Word/Integer, je nach Größe des Typs.

Mfg
FAlter

Neutral General 29. Mai 2008 15:55

Re: Typ in String umwandeln
 
Zitat:

Zitat von FAlter
Hi,

Zitat:

Zitat von rollstuhlfahrer
Wie du aus dem Integer wieder deinen Typ bekommst, weiß ich nicht.

Einfach ein Typecast. Größe beachten! Ord nimmt einem diese Arbeit ab, entspricht Typecast nach Byte/Word/Integer, je nach Größe des Typs.

Mfg
FAlter

Wenn ich mich richtig entsinne sind alle ordinalen Typen nur ein Byte groß. Von daher weiß ich nicht warum Ord irgendwann ein Word oder einen Integer zurückgeben sollte ;)

Muetze1 29. Mai 2008 15:58

Re: Typ in String umwandeln
 
Zitat:

Zitat von Neutral General
Wenn ich mich richtig entsinne sind alle ordinalen Typen nur ein Byte groß. Von daher weiß ich nicht warum Ord irgendwann ein Word oder einen Integer zurückgeben sollte ;)

Nein, Aufzählungen sind bei Delphi so groß wie nötig, können auch grösser werden. Diese Eigenart ist vor allem bei Mischprojekten in den Studios (BDS, RAD) wichtig, da dort dies zu Problemen führt. Daher gibt es dort explizit die Einstellungen der Enum-Größen in den Delphi Compileroptionen (bzw. $Z1, $Z2, $Z4).

FAlter 29. Mai 2008 15:59

Re: Typ in String umwandeln
 
Hi,

wenn der Typ mehr als 256 verschiedene Elemente beinhaltet, ist er größer als ein Byte. Das ist allerdings äußerst selten der Fall.

Bei Mengen (set) reichen dagegen schon mehr als acht Elemente. Das kommt öfters vor.

Mfg
FAlter


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 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