Autor Beitrag
kingsize61
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 11.08.03 10:22 
Hallo,

gibt es eine Funktion oder Eigenschaft wie ich einen Variablenname in einen string bekommen kann?

z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var myint: integer;  s: string;

...
...
  s:='myint'



Schon mal Danke im voraus.

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt und BBCode aktiviert.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: 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:
ausblenden 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.

_________________
Ist Zeit wirklich Geld?
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: 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:

_________________
Hasta La Victoria Siempre
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: 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);

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
kingsize61 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: 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:

ausblenden 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);  // ordinalen Typ erstellen mit den gewünsachten Bezeichnern
  TMyVarValues = Array [TMyVars] of Integer; // Feld erstellen um Werte aufnehmen zu können
...
var
  s : String;
  i: Integer;
  iMyVar: TMyVars;
  iMyVarOrd :Integer;
  MyVarValues: TMyVarValues;
begin
  iMyVar := iWelt;
  MyVarValues[iMyVar] := i;  // Wert setzen

  s := GetEnumName(TypeInfo(TMyVars), Ord(iMyVar));  // Namen zurückbekommen

  s := 'iFluss';
  iMyVarOrd := GetEnumValue(TypeInfo(TMyVars), s); //Aufzählungs-Wert aus Namen
  iMyVar := TMyVars(iMyVarOrd);  // ordinalem Wert -> TMyVar-Wert
  i := MyVarValues[iMyVar];  // "Variablen-Wert" auslesen
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