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:
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?
Zuletzt geändert von Tommy am 27.01.2015 10:30, insgesamt 2-mal geändert.
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.
Die Runtime Lib könnte hilfreich sein. Gibt es seit PB5.20
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
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?
Zuletzt geändert von Tommy am 27.01.2015 10:30, insgesamt 2-mal geändert.
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.
@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.