PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom Probleme mit End if



maxmoritz
10.04.2024, 08:37
Hallo liebe Community,
ich stelle hier mal einen Ausschnitt aus meinem Bascom Programm ein.

If Durchlauf = 80 Then Gosub Tempeinlesen 'Alle 20 Sek. Temperaturen aktualisieren
End if
If Durchlauf < 40 Then Gosub Anzeigeblock1 'Alle 10 Sekunden erfolgt der Anzeigewechsel
End if
If Durchlauf >= 40 Then Gosub Anzeigeblock2
End if
If Durchlauf = 40 Or Durchlauf = 80 Then Gosub Uhrausgeben 'Alle 10 Sekunden Datum und Uhrzeit anzeigen
End if

Ich bekomme immer folgende Fehlermeldung:


line 107 Error 28 IF THEN expected
line 107 Error 7 IF THEN expected (END IF in source 107)

kann mir bitte jemand helfen?

ich bin absoluter Bascom Neuling

gunzelg
10.04.2024, 09:07
Hallo
welche Zeile ist denn Zeile 107?

Wie ist denn die Variable "Durchlauf" definiert? Als Bit?

Gruß

maxmoritz
10.04.2024, 10:02
Hallo gunzelg,
die Zeile 107 ist gleich bei dem ersten Enf if
If Durchlauf = 80 Then Gosub Tempeinlesen 'Alle 20 Sek. Temperaturen aktualisieren
End if

Durchlauf ist als Byte definiert

das Programm funktionierte einwandfrei, bis ich begann alle IF THEN Anweisungen mit einem End if abzuschliessen
die Fehlermeldung kommt bei allen Zeilen die nach einem IF THEN ein End if enthalten

gunzelg
10.04.2024, 10:31
Und Syntax Error ist das auch nicht? Dass es "endif" heissen muss? Oder dass das Case-sensitiv ist? Groß/Kleinbuchstaben? If -> End If

maxmoritz
10.04.2024, 11:15
nein Syntaxfehler ist es nicht, Ich habe alle End if herausgelöscht dann zeigt es mir keinen Fehler mehr an.
Ist mir unverständlich, denn ich habe mir sagen lassen jede IF THEN Anweisung muss mit einem END IF abgeschlossen werden

Trotzdem danke für Deine Bemühungen

Searcher
10.04.2024, 11:29
nein Syntaxfehler ist es nicht, Ich habe alle End if herausgelöscht dann zeigt es mir keinen Fehler mehr an.
Ist mir unverständlich, denn ich habe mir sagen lassen jede IF THEN Anweisung muss mit einem END IF abgeschlossen werden


Hallo,

Wenn auf das "then" nur eine Anweisung folgt, kann sie in die gleiche Zeile wie das "then" geschrieben werden. Das abschließende "end if" kann dann entfallen.

Die eine Anweisung nach dem "then" kann auch in die folgende Zeile geschrieben werden. Dann ist in der nächsten Zeile aber ein "end if" notwendig.

Die Doku von mcs dazu: https://avrhelp.mcselec.com/if_then_else_end_if.htm


Gruß
Seacher

maxmoritz
10.04.2024, 12:17
das war`s jetzt funktioniert es auch wieder, zumindest dieser Teil.
vielen Dank Seacher

Ich habe zwar noch ein anderes Problem, aber dazu müßte ich mein ganzes Programm einstellen und erklären.
Das würde zu weit führen.