Hallo zusammen.
Hier habe ich eine Fehlermeldung die ich nicht beseitigen kann.
Fehler: Compilation error: 'DisplFeld3' was not declared in this scope;
Die Fehlerursache ist, dass die if-else -Schleife nicht durchlaufen wird! Aber warum nur?Code:... if(Ishunt < 1.0) { //wenn Wert < 1,0A ist, [mA]-Anzeige String DisplFeld3 = "3 " + String(IshuntMA, 1) + "mA"; } else { String DisplFeld3 = "3 " + String(Ishunt, 1) + "A"; } String DisplFeld4 = "4 von Pin " + String(VmwMax, 0); ... display.setCursor(1,46); display.print(DisplFeld3); display.setCursor(1,62); display.print(DisplFeld4); ...
- - - Aktualisiert - - -
Füge ich folgende Testzeile hinzu, kommt keine Fehlermeldung und wird nur "3 test" angezeigt.
Code:... String DisplFeld3 = "3 test"; //TESTzeile if(Ishunt < 1.0) { String DisplFeld3 = "3 " + String(IshuntMA, 1) + "mA" } else { String DisplFeld3 = "3 " + String(Ishunt, 1) + "A"; } ...
Geändert von frabe (Gestern um 15:05 Uhr)
__________________________________________________ _
| Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |
Ist zwar nicht meine Sprache, hoffe aber die Regeln gelten hier auch:
zu 1.
Die Schleife wird schon durchlaufen, du deklarierst aber die Variable innerhalb des IF/ELSE Blockes und deshalb ist Sie auch nur dort sichtbar.
Besser:
Dadurch ist DisplFeld3 auch außerhalb des Blocks verfügbar und die Fehlermeldung sollte verschwinden.Code:String DisplFeld3; // Deklaration der Variable außerhalb des if-else-Blocks if (Ishunt < 1.0) { // wenn Wert < 1,0A ist, [mA]-Anzeige DisplFeld3 = "3 " + String(IshuntMA, 1) + "mA"; ...
zu 2.
Du erzeugst innerhalb des IF/ELSE Blockes eine neue lokale Variable, welche nur dort lokal verfügbar ist, Du greifst nicht auf die zuerst Deklarierte zu.
Lasse bitte die Typendeklaration "STRING" weg
(rot markiert weglassen)
Code:String DisplFeld3 = "3 test"; // TESTzeile if (Ishunt < 1.0) { String DisplFeld3 = "3 " + String(IshuntMA, 1) + "mA"; // Kein "String" davor ...
Gruß André
Lesezeichen