Variable dynamisch ändern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Variable dynamisch ändern

Beitrag 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?
Zuletzt geändert von Tommy am 27.01.2015 10:30, insgesamt 2-mal geändert.
PB 5.41 x64
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Variable dynamisch ändern

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Variable dynamisch ändern

Beitrag von ts-soft »

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.
Bild
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Re: Variable dynamisch ändern

Beitrag von Tommy »

Runtime :shock:
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 :o 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.
PB 5.41 x64
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Variable dynamisch ändern

Beitrag 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?
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:55, insgesamt 1-mal geändert.
~ DELETE ~
Shamos
Beiträge: 32
Registriert: 12.11.2014 09:44

Re: Variable dynamisch ändern

Beitrag 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.
Windows 8.1 x64 | PureBasic 5.31 x64 | Dell Inspiron 3847 | i5-4440 3.1Ghz | 8GB DDR3 | Nvidia Geforce 625
Antworten