Dynamische Variablengenerierung

Previous topic - Next topic

WPShadow

Hallo,

ich schreibe mal hier rein, da ich mir nicht sicher bin, ob das Problem bzw. die Idee die ich habe ?berhaupt l?sbar ist bzw. ob es nicht gegen jeglichen Sinn einer Programmiersprache geht...

Ich bastle an einer Idee, bei der ich Variablen ?ber einen String anlegen m?chte. Und zwar nicht die Stringvariable selbst, sondern deren Inhalt!

String$ = "Variablenname"

Gibt es daf?r irgendeine M?glichkeit? Es geht mir hierbei um dynamisches Auslesen von Variablen, die zwar im system definiert sind, die ich aber nicht extra alle anf?hren m?chte, ca. so:

// Die Read liest irgendeinen Variablennamen von extern ein

read$ = "life" // life als normale Variable mit dem Inhalt 5

dyn_var = read$ // dyn_var als Platzhalter f?r life, wobei nicht life als name, sondern der Inhalt von life an dyn_var ?bergeben werden sollte
// (war nur nicht sicher, wie ich das ausdr?cken soll, deshalb das = )


print dyn_var, 0, 0 // dyn_var = 3

Der Sinn dahinter w?re, da? man z.B. in einer Text - Datei einfach Variablen angeben k?nnte, die ausgelesen bzw. ersetzt werden, ohne, da? man im System jedes Mal eine neue Variable anlegen mu?.

Gibt es in dieser Hinsicht irgendeine L?sung bzw. schon etwas fertiges, das ca. in diese Richtung reagiert bzw. funktioniert oder ist es einfach unbrauchbar?

GLG

W.

EDIT:
Bin ich hier in der Richtung richtig unterwegs?
http://de.wikipedia.org/wiki/Assoziatives_Array
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

?hmm wie w?rs mit ner Ini ?
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

WPShadow

#2
Problem gel?st, ist aber etwas komplexer geworden als gedacht! Wenn ich aus der Arbeit zur?ck bin, lade ich hier ein kleines Beispiel hoch!

EDIT:

Hier das Beispiel! Hab etwas mit Gernot experimentiert! Ist noch in der Konzeptphase!  :good:

Code (glbasic) Select

LOCAL test$, file

ok = OPENFILE(1, "test.txt", 1)

IF ok = 1
READLINE 1, test$
ENDIF

anzahl = SPLITSTR(test$, daten$[], " ")




DIM befehl$[1]


ok2 = OPENFILE(2, "befehle.txt", TRUE)

WHILE ENDOFFILE(2) = 0

READLINE 2, inhalt$

DIMPUSH befehl$[], inhalt$

DIMDEL befehl$[], 0

WEND


FOREACH user$ IN befehl$[]
IF user$ = daten$[0]
IF anzahl = 4
pos_x = daten$[2]
pos_y = daten$[3]
PRINT daten$[1], pos_x, pos_y
ENDIF
ENDIF
NEXT

SHOWSCREEN

KEYWAIT


Anbei die beiden Text - Dateien zum testen!

[attachment deleted by admin]
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

WPShadow

Code (glbasic) Select

LOCAL test$, file

ok = OPENFILE(1, "test.txt", 1)

IF ok = 1
READLINE 1, test$
ENDIF

anzahl = SPLITSTR(test$, daten$[], " ")


life = 15

DIM befehl$[1]
DIM var$[1]

var$[0] = "life"


ok2 = OPENFILE(2, "befehle.txt", TRUE)

WHILE ENDOFFILE(2) = 0

READLINE 2, inhalt$

DIMPUSH befehl$[], inhalt$

DIMDEL befehl$[], 0

WEND


FOREACH user$ IN befehl$[]
IF user$ = daten$[0]
IF anzahl = 4
pos_x = daten$[2]
pos_y = daten$[3]
PRINT daten$[1], pos_x, pos_y
ENDIF

IF anzahl = 5
FOREACH variable$ IN var$[]

IF variable$ = daten$[2]
var_info$ = life
ENDIF

NEXT


pos_x = daten$[3]
pos_y = daten$[4]
PRINT daten$[1] + " " + var_info$, pos_x, pos_y
ENDIF



ENDIF
NEXT

SHOWSCREEN

KEYWAIT


Hier die verbesserte Version!

Geht mal her und setzt in die test.txt mal folgenden Satz rein:

text Lebensenergie: life 100 200
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

WPShadow

hehehe

Hey, ich versuche mir die Arbeit f?r LR einfach zu erleichtern! Au?erdem macht permanent neu compilieren auch keinen Spa?!  :nana:
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est