Go Down

Topic: Variablenname aus Stringvariable (Read 192 times) previous topic - next topic

mb817

Hallo zusammen,

ich habe in einem Programm eine Stringvariable in der, der Name einer Integervariable steht.
Jetzt möchte ich diese Integervariable mit dem Wert einer anderen Integervariable beschreiben.
Trotz aller Suche komme ich hier zu keinem Ergebnis und hoffe auf Eure Hilfe.
Ich hoffe, ich habe mich klar genug ausgedrückt? :o

Vielen Dank im Voraus


Code: [Select]

String Variablenname = "INT_Variable";   //String mit dem Namen der zu beschreibenden Variable

uint16_t INT_Variable = 0;               // zu beschreibende Variable
uint16_t wert = 123;                      // Wert der in Variable geschrieben werden soll

void setup() {
  Serial.begin(19200);
}

void loop() {
  Serial.print(Variablenname); Serial.print(" = "); Serial.println(INT_Variable);
  delay(2000);

  INT_Variable = wert; // Wie kann ich hier den Inhalt der Stringvariablen als Variablenname eingeben?
}

combie

#1
Oct 21, 2019, 12:58 pm Last Edit: Oct 21, 2019, 01:01 pm by combie
Alle Variablenbezeichner müssen zur Kompilezeit bekannt sein.

Quote
Trotz aller Suche komme ich hier zu keinem Ergebnis und hoffe auf Eure Hilfe.
Suchtipp: "Associative arrays in C++"

Vielleicht möchtest du eine andere Sprache als C++ verwenden?
z.B. PHP oder Forth.
Die können sowas.
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

Serenifly

#2
Oct 21, 2019, 01:16 pm Last Edit: Oct 21, 2019, 01:16 pm by Serenifly
Code: [Select]

if(Variablenname == "INT_Variable")
   INT_Variable = Wert;

 :P

combie

Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

michael_x

Falls du die smileys nicht richtig interpretieren kannst:

Quote
Trotz aller Suche komme ich hier zu keinem Ergebnis
Da war deine Suche erfolgreich.

"INT_Variable" und uint6_t INT_Variable; haben überhaupt nichts miteinander zu tun.

mb817

Danke für die Antworten.

@Serenifly

leider geht das mit der "if" abfrage nicht, da bei den Programmaufrufen unterschiedliche Variablennamen vorkommen.

@michael_x

deine Aussage ist mir völlig unverständlich!

Serenifly

Du findest keine Lösung weil C++ für sowas nicht konstruiert wurde. Das widerspricht einfach der Design Philosophie der Sprache

MicroBahner

#7
Oct 21, 2019, 05:43 pm Last Edit: Oct 21, 2019, 05:44 pm by MicroBahner
Du must dein Programmkonzept überprüfen. Leider schreibst Du nicht, was Du eigentlich bezweckst.

Derzeit befindest Du dich jedenfalls in einer Sackgasse, aus der es keinen Ausweg gibt.

Also: Rückwärtsgang einlegen, und einen anderen Weg für dein ( uns unbekanntes )  eigentliches Problem suchen.
Gruß, Franz-Peter

postmaster-ino

Hi

Oder Anders:
Die Variablen haben im Arduino keinen Namen mehr - Das sind nur noch Speicherplätze, wo der Arduino irgend welche Zahlen abholt oder hin schreibt.
Diese Zahlen können sogar Buchstaben bedeuten und im Terminal genau so ausgegeben werden - aber die Namen der Variablen gibt es nur in Deinem Sketch - im Kompilat ist davon Nichts mehr zu finden.

Selber mache ich was Ähnliches:
Ich benutze ein Array mit int16_t Variablen - Meine habe ich 'Merker' getauft - weil sich der Arduino Da was merken soll ... und ich will Davon einen Teil von Außen ändern können.
Somit sende ich per Terminal den Befehl 'Setze Merker 12 auf Wert 813' - uns schwups, passiert genau Das.
Code: [Select]

    Setze Merker
    F6 aa LO HI bb -- -- --
                bb          Merker-Nummer
             HI             HIGH-Byte der Knoten-ID, Ziel-ID  ID muß mit Eigener übereinstimmen
          LO                LOW-Byte der Knoten ID, Ziel-ID
       aa                   0/1 HIGH/LOW Soll-Zustand des Merker
    F6                      Setze Merker

Das sind 8 Byte Platz - das Maximum einer CAN-Nachricht.
Wenn ich nun in den CAN-Bus eine solche Nachricht schicke, ändert der angesprochene Knoten den genannten Merker.
Ok, in dieser Implementierung kann ich nur BYTE-Werte speichern - für den gedachten Zweck (AUS 0, Hand EIN 1, AUTO 2) reicht Das aber gerade so.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

combie

@Serenifly

leider geht das mit der "if" abfrage nicht, da bei den Programmaufrufen unterschiedliche Variablennamen vorkommen.
Ich weiß, dass ich nicht Serenifly bin.
Und genauso gut weiß ich, dass man auch mehrere if-Abfragen nacheinander, bzw. in Schleifen, anwenden kann.

Quote
Ich hoffe, ich habe mich klar genug ausgedrückt?
Die Worte, wir lesen und kennen.....


Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

Rintin

@mb817: Beim compilieren gehen Variablennamen verloren. Ich denke da musst du selber was schreiben. Vielleicht kann man ArduinoJson und dessen JsonObject mißbrauchen.

Vielleicht erzählst du uns ja auch, was du machen willst. Möglicherweise fällt uns dann was besseres ein.

ElEspanol

#11
Oct 22, 2019, 03:09 pm Last Edit: Oct 22, 2019, 03:09 pm by ElEspanol
Er sitzt einem Verständnisfehler auf.

Man kann einen oder mehrere Parameter an eine Funktion übergeben und diese Werte innerhalb der Funktion mit einem anderen Namen benutzen.

beeblebrox

Stichworte zur Suche : Formaler und aktueller Parameter !

Ulli

Go Up