Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Variablename --> string
kingsize61 - Mo 11.08.03 10:22
Titel: Variablename --> string
Hallo,
gibt es eine Funktion oder Eigenschaft wie ich einen Variablenname in einen string bekommen kann?
z.B.
Delphi-Quelltext
1: 2: 3: 4: 5:
| var myint: integer; s: string;
... ... s:='myint' |
Schon mal Danke im voraus.
Moderiert von
Klabautermann: Delphi-Tags hinzugefügt und BBCode aktiviert.
AndyB - Mo 11.08.03 10:32
Nur indem du ihn als selbstgeschriebenen String zuweist.
Delphi hat keinen Preprozessor wie C/C++ ihn haben. Bei diesen könntest du so vorgehen:
Quelltext
1: 2: 3: 4:
| #define MAKESTR(__x) ##x
int myvar; char *s = MAKESTR(myvar); |
Wobei das auch wieder mehr Schreibarbeit als ein einfaches
s := 'myvar' ist.
Terra23 - Mo 11.08.03 13:23
Mag ja sein, daß ich mich irre, aber sein geposteter Code läßt auch irgendwie vermuten, daß er einfach nur den Integer in ein String wandeln will, oder? :roll:
maxk - Mo 11.08.03 21:18
| Terra23 hat folgendes geschrieben: |
| Mag ja sein, daß ich mich irre, aber sein geposteter Code läßt auch irgendwie vermuten, daß er einfach nur den Integer in ein String wandeln will, oder? :roll: |
Wenn dem so sei:
s:=IntToStr(myint);
kingsize61 - Di 12.08.03 08:56
Hallo,
ein integer wollte ich nicht in einen string wandeln.
Ich möchte zum einen ganz normal mit variablen arbeiten, (integer und realzahlen) und zum anderen mit den variablennamen eine weitere Referenz herstellen.
Als Beispiel: Ich habe eine integer variable die da heisst: iWelt: integer;
Zu dieser variable brauche ich nicht nur den Wert selber, sondern den Namen als string, 'iWelt'.
Ich denke die erste Antwort kommt der Sache schon näher.
Der compiler speichert ja ne menge information zu jeder variablen., wie namen, länge, typ u.s.w. Nur an den namen müsste ich dran kommen.
Viele Grüße, Siggi
Tryer - Di 12.08.03 09:22
| kingsize61 hat folgendes geschrieben: |
| Der compiler speichert ja ne menge information zu jeder variablen., wie namen, länge, typ u.s.w. Nur an den namen müsste ich dran kommen. |
An den Namen der Instanz, also iWelt kommst du so nicht, nur an die Daten des Typ´s Integer.
Es gibt aber ein Workaround um solche Beziehungen herzustellen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| uses ..., TypInfo; type TMyVars = (iWelt, iStadt, iLand, iFluss); TMyVarValues = Array [TMyVars] of Integer; ... var s : String; i: Integer; iMyVar: TMyVars; iMyVarOrd :Integer; MyVarValues: TMyVarValues; begin iMyVar := iWelt; MyVarValues[iMyVar] := i; s := GetEnumName(TypeInfo(TMyVars), Ord(iMyVar)); s := 'iFluss'; iMyVarOrd := GetEnumValue(TypeInfo(TMyVars), s); iMyVar := TMyVars(iMyVarOrd); i := MyVarValues[iMyVar]; end; |
Das GetEnumValue und GetEnumName liesse sich auch in Funktionen packen, dann fällt viel Ballast weg.
Auf diese Art kannst Du beliebig zwischen Wert, Name und Aufzählungstyp switchen.
MfG,
Tryer
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!