Was bedeutet die Meldung "unbeendete Bedingung"
-
- Beiträge: 50
- Registriert: 29.03.2013 12:25
- Wohnort: Eisenach
Was bedeutet die Meldung "unbeendete Bedingung"
Hallo !
Ein Purebasicprogramm, das früher ohne Fehler lief, liefert jetzt beim Aufruf und Ablauf aus der IDE die Meldung "unbeendete Bedingung" und
verweist auf die Zeile nach dem Programm, also eine Zeile hinter END. Die Kompilierung geht einfach nicht. Was ist mit der Meldung gemeint.
Die IF ELSE ENDIF sind unverändert und es dürfte auch nichts fehlen.
Ein Purebasicprogramm, das früher ohne Fehler lief, liefert jetzt beim Aufruf und Ablauf aus der IDE die Meldung "unbeendete Bedingung" und
verweist auf die Zeile nach dem Programm, also eine Zeile hinter END. Die Kompilierung geht einfach nicht. Was ist mit der Meldung gemeint.
Die IF ELSE ENDIF sind unverändert und es dürfte auch nichts fehlen.
Re: Was bedeutet die Meldung "unbeendete Bedingung"
Vielleicht ein kaputtes Select statement.
Du kannst also ein EndSelect an verschiedenen Stellen im Code platzieren. Je nachdem ob du den anderen Fehler erhältst oder es wieder compilierbar wird, weißt du dann, ob du vor oder hinter der fehlerhaften Stelle bist. Ich weiß aber nicht, ob der Fehler auch von einem anderen statement als einem Select ausgegeben wird.
Code: Alles auswählen
;EndSelect ; würde geben: error endselect ohne select
Select 1
Case 1
End
;EndSelect ; würde den code wahrscheinlich wieder compilierbar machen
Re: Was bedeutet die Meldung "unbeendete Bedingung"
In solchen Fällen falte ich immer erst einmal alle Blöcke (if,select,for,...).
Dabei werden Fehler schon sehr schnell sichtbar.
Es kann auch sein,dass ein Exit(Break) in einer Schleife zwar zum gewünschten abbruch führt,
ABER es muss die Schleife trotzdem beendet werden!
Das wäre das erste, das ich prüfen würde
Olaf
Dabei werden Fehler schon sehr schnell sichtbar.
Es kann auch sein,dass ein Exit(Break) in einer Schleife zwar zum gewünschten abbruch führt,
ABER es muss die Schleife trotzdem beendet werden!
Das wäre das erste, das ich prüfen würde
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
-
- Beiträge: 50
- Registriert: 29.03.2013 12:25
- Wohnort: Eisenach
Re: Was bedeutet die Meldung "unbeendete Bedingung"
Hallo !
Danke für Eure Antwort. Als Anfänger sind meine Programme ohne Case oder auch Break, diese Befehle sind mir nicht klar und geläufig genug. Case ersetze ich durch IF (Then) Endif durch mehrere Abfragen der möglichen Fälle. Schleifen habe ich auch nicht durchbrochen. Was bedeutet denn eigentlich die Fehlermeldung und was soll der Hinweis auf die Zeile nach End ? Hat das mit dem Header am Ende einer PB-Datei zu tun,der in der IDE nicht sichtbar ist ? Immerhin ist das Programm mal lauffähig gewesen und seit dieser Zeit wurde auch nichts geändert.
Heinz
Danke für Eure Antwort. Als Anfänger sind meine Programme ohne Case oder auch Break, diese Befehle sind mir nicht klar und geläufig genug. Case ersetze ich durch IF (Then) Endif durch mehrere Abfragen der möglichen Fälle. Schleifen habe ich auch nicht durchbrochen. Was bedeutet denn eigentlich die Fehlermeldung und was soll der Hinweis auf die Zeile nach End ? Hat das mit dem Header am Ende einer PB-Datei zu tun,der in der IDE nicht sichtbar ist ? Immerhin ist das Programm mal lauffähig gewesen und seit dieser Zeit wurde auch nichts geändert.
Heinz
-
- Beiträge: 220
- Registriert: 30.04.2009 21:21
- Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS
Re: Was bedeutet die Meldung "unbeendete Bedingung"
Eigentlich sagt die Meldung ja schon was nicht stimmt
Eine Bedingung wie IF oder SELECT oder WHILE oder FOR benötigen immer eine passende Beendigung der Bedingung wie ENDIF oder ENDSELECT oder WEND oder NEXT. Ist das nicht gegeben, sucht der Compiler solange bis er eine passende Endbedingung gefunden hat. Und das macht er so lange bis das Ende des Codes erreicht ist. Sogar bis hinter den letzten Befehl END.
Also schau noch mal genau nach wo hier die Beendigung fehlt.
Eine Bedingung wie IF oder SELECT oder WHILE oder FOR benötigen immer eine passende Beendigung der Bedingung wie ENDIF oder ENDSELECT oder WEND oder NEXT. Ist das nicht gegeben, sucht der Compiler solange bis er eine passende Endbedingung gefunden hat. Und das macht er so lange bis das Ende des Codes erreicht ist. Sogar bis hinter den letzten Befehl END.
Also schau noch mal genau nach wo hier die Beendigung fehlt.
Wissen schadet nur dem, der es nicht hat !
Re: Was bedeutet die Meldung "unbeendete Bedingung"
auch ich tippe auf ein fehlendes EndSelect. Denn nur ein solches gibt eine "Unbeendete Bedingung" aus.
Fehlende EndIfs, Wends oder Nexts geben andere Meldungen aus: "Das folgende 'End' Bedingungs-Schlüsselwort fehlt: ..."
Fehlende EndIfs, Wends oder Nexts geben andere Meldungen aus: "Das folgende 'End' Bedingungs-Schlüsselwort fehlt: ..."
Hygge
Re: Was bedeutet die Meldung "unbeendete Bedingung"
Die IF ELSE ENDIF sind unverändert und es dürfte auch nichts fehlen.
dürfte auch nichts fehlen heisst auch, es könnte aber...
Der Code wäre eine gute hilfe, um den Fehler zu finden!!
Bitte, poste doch einfach mal den Code, dann können wir vllt den Fehler finden.
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Was bedeutet die Meldung "unbeendete Bedingung"
Ich hab doch gesagt was du machen kannst. Setzte ein EndSelect am Ende des Quellcodes. Wenn das dann wieder compiliert, dann weißt du, dass es ein offenes Select/Case ist.
-
- Beiträge: 50
- Registriert: 29.03.2013 12:25
- Wohnort: Eisenach
Re: Was bedeutet die Meldung "unbeendete Bedingung"
Danke Euch !
Habe den Fehler gefunden. Es fehlte tatsächlich ein Endif bei einer IF.... Else Entscheidung, wobei hinter dem Else fast 3/4 des Programmcodes
steht, was das Finden der Zeile in der das Endif stehen muß , schwierig und langwierig gemacht hat. Ich dachte wirklich, daß nichts wegkommen
kann. Man hätte vielleicht die kurze Alternative nach Else setzen sollen.
Habe den Fehler gefunden. Es fehlte tatsächlich ein Endif bei einer IF.... Else Entscheidung, wobei hinter dem Else fast 3/4 des Programmcodes
steht, was das Finden der Zeile in der das Endif stehen muß , schwierig und langwierig gemacht hat. Ich dachte wirklich, daß nichts wegkommen
kann. Man hätte vielleicht die kurze Alternative nach Else setzen sollen.
-
- Beiträge: 220
- Registriert: 30.04.2009 21:21
- Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS
Re: Was bedeutet die Meldung "unbeendete Bedingung"
Prima, dass Du den Fehler gefunden hast.
Ich will Dir zwar nicht in Deinen Programmierstil reinreden aber man kann solche Fehler vermeiden wenn man längeren Code zwischen IF / ENDIF Bedingungen in eine eigene Procedure packt. So bleibt es übersichtlicher.
Die Bedingung bleibt übersichtlich.
Ich will Dir zwar nicht in Deinen Programmierstil reinreden aber man kann solche Fehler vermeiden wenn man längeren Code zwischen IF / ENDIF Bedingungen in eine eigene Procedure packt. So bleibt es übersichtlicher.
Code: Alles auswählen
Procedure MyProcedure()
;sehr umfangreicher Code
EndProcedure
If <Bedingung>
MyProcedure() ;sehr umfangreicher Code
Elseif <Bedingung>
; kurzer Code
Else
;kurzer Code
Endif
Wissen schadet nur dem, der es nicht hat !