Seite 1 von 1
Variable dynamisch ändern
Verfasst: 08.12.2014 21:49
von Tommy
Hi! Ich will eine Variable ändern um genauer zu sagen den Wert der Variable aber nich statisch sondern dynamisch. Ich habe zwei Input Dialoge und möchte mit meinen Dialog beliebige Variablen ändern ohne das ich im Code statisch abfrage und festlege. Es schaut folgendermaßen aus:
Code: Alles auswählen
Define vordefinierteVariable$="hi"
nameVariable$=InputRequester("","Name der Variable","vordefinierteVariable$",0)
wertVariable$=InputRequester("","Wert der Variable","hallo",0)
%nameVariable$%=wertVariable$
Ich schreibe den Namen der Variable die ich ändern möchte und danach den Wert. Automatisiert soll je nach dem was ich eingegeben werden die Varible geändert werden und nicht schon vorher festgelegt sondern ich kann auch anderen Variablennamen schreiben. Is es möglich den eingegebenen Namen als Variablennamen einzufügen den ich ändern möchte? Ich möchte wenn ich vordefinierteVariable$ eingegeben habe das vordefinierteVariable$ auch geändert wird mit dem Wert den ich ebenfalls eingegeben habe. Klingt kompliziert aber ihr wisst bestimmt was ich meine oder? Oder muss ich tatsächlich abfragen wenn nameVariable$ gleich vordefinierteVariable$ dann setze vordefinierteVariable$ hardgecodet den Wert? Geht es auch dynamischer irgendwie?
Re: Variable dynamisch ändern
Verfasst: 08.12.2014 22:17
von NicTheQuick
Nein, dynamisch in deinem Sinne geht sowas nur mit Skriptsprachen wie z. B. Python oder PHP. Bei einem kompilierten Programm, das tatsächlich in Maschinensprache übersetzt wurde, existieren keine Variablen- oder Procedurenamen nehmen.
Es führt also kein Weg daran vorbei alle Variablennamen irgendwie in Maps oder ähnlichem zu speichern.
Re: Variable dynamisch ändern
Verfasst: 08.12.2014 22:22
von ts-soft
Die Runtime Lib könnte hilfreich sein. Gibt es seit PB5.20
Re: Variable dynamisch ändern
Verfasst: 08.12.2014 22:34
von Tommy
Runtime

So ?
Code: Alles auswählen
Define vordefinierteVariable$="hi"
Runtime vordefinierteVariable$
Debug "vorher ..."
Debug vordefinierteVariable$
nameVariable$=InputRequester("","Name der Variable","vordefinierteVariable$",0)
wertVariable$=InputRequester("","Wert der Variable","hallo",0)
SetRuntimeString(nameVariable$,wertVariable$)
Debug "nachher ..."
Debug vordefinierteVariable$
Scheint zu funktionieren

Is auch richtig so ? Danke ts-soft!!!
Laut NickTheQuick Aussage soll es in Maschinensprache nich funzen. Wer hat recht und wie kann es sein?
Re: Variable dynamisch ändern
Verfasst: 08.12.2014 23:24
von NicTheQuick
An die Runtime-Lib habe ich eben nicht gedacht. Die macht im Grunde genau das, was man sonst auch manuell machen müsste. Sie speichert Variablennamen und deren Adressen in der Executable, damit man auch im Nachhinein Variablen ändern kann.
Kann man damit auch neue Variablen hinzufügen?
Verfasst: 09.12.2014 14:37
von CodeCommander
~ DELETE ~
Re: Variable dynamisch ändern
Verfasst: 09.12.2014 19:14
von Shamos
@Tommy:
Mal so als Inspiration, da es sich bei PB-Programmen um ein Compiliertes Programm
handelt kannst Du das mit den dynamischen Variablennamen im Code knicken.
Aber Du könntest Dir ein assoziatives Array = HASH = in PB Map anlegen und als
Wert einen Pointer auf eine Struktur integer oder statischen String ablegen,
damit hättest du im Grunde genau das was du haben willst.
Da ich auch Getter und Setter nicht so stehe, sondern lieber direkt auf Daten zugreife
empfehle ich hier mal einfach nicht entsprechende Prozeduren dazu zu schreiben,
doch evtl. ließe sich das noch mittels eines MACRO etwas komfortabler und zugleich
performanter gestalten als das durch einen Prozeduraufruf der Fall wäre.