Variablenname aus Stringvariable

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

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?
}

Alle Variablenbezeichner müssen zur Kompilezeit bekannt sein.

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.

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

:stuck_out_tongue:

:grin:

Falls du die smileys nicht richtig interpretieren kannst:

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.

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!

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

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.

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.

    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

mb817:
@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.

Ich hoffe, ich habe mich klar genug ausgedrückt?

Die Worte, wir lesen und kennen.....

@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.

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.

Stichworte zur Suche : Formaler und aktueller Parameter !

Ulli