Seite 1 von 2

Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 19.08.2021 09:20
von Heinz Mendax
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.

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 19.08.2021 13:21
von #NULL
Vielleicht ein kaputtes Select statement.

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

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 19.08.2021 18:12
von Olafmagne
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

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 19.08.2021 22:06
von Heinz Mendax
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

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 19.08.2021 22:17
von MenschMarkus
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.

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 19.08.2021 22:46
von Kiffi
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: ..."

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 19.08.2021 23:30
von Olafmagne
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

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 20.08.2021 08:02
von #NULL
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.

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 20.08.2021 08:44
von Heinz Mendax
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.

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Verfasst: 20.08.2021 10:14
von MenschMarkus
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.

Code: Alles auswählen

Procedure MyProcedure()
	;sehr umfangreicher Code
EndProcedure
	
If <Bedingung>
	MyProcedure()		;sehr umfangreicher Code
Elseif <Bedingung>
	; kurzer Code
Else
	;kurzer Code
Endif
Die Bedingung bleibt übersichtlich. :wink: