Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlermeldung >>> was not declared in this scope



frabe
07.11.2024, 14:09
Hallo zusammen.

Hier habe ich eine Fehlermeldung die ich nicht beseitigen kann.
Fehler: Compilation error: 'DisplFeld3' was not declared in this scope;



...
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);
...

Die Fehlerursache ist, dass die if-else -Schleife nicht durchlaufen wird! Aber warum nur?

- - - Aktualisiert - - -

Füge ich folgende Testzeile hinzu, kommt keine Fehlermeldung und wird nur "3 test" angezeigt.


...
String DisplFeld3 = "3 test"; //TESTzeile

if(Ishunt < 1.0) {
String DisplFeld3 = "3 " + String(IshuntMA, 1) + "mA"
}
else {
String DisplFeld3 = "3 " + String(Ishunt, 1) + "A";
}
...

Andre_S
08.11.2024, 08:17
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:


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";
...

Dadurch ist DisplFeld3 auch außerhalb des Blocks verfügbar und die Fehlermeldung sollte verschwinden.


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)


String DisplFeld3 = "3 test"; // TESTzeile
if (Ishunt < 1.0) {
String DisplFeld3 = "3 " + String(IshuntMA, 1) + "mA"; // Kein "String" davor
...



Gruß André

frabe
08.11.2024, 09:41
Ist zwar nicht meine Sprache, hoffe aber die Regeln gelten hier auch:

Hi Andre.
Dein Wissen hat völlig ausgereicht - DANKE - das wars! Alles läuft fehlerfrei.
Über Deklarationen und deren Gültigkeitsbereiche solpere ich dauernd...
Alles Schöne ...fRANK