Was bedeutet die Meldung "unbeendete Bedingung"

Anfängerfragen zum Programmieren mit PureBasic.
Heinz Mendax
Beiträge: 50
Registriert: 29.03.2013 12:25
Wohnort: Eisenach

Was bedeutet die Meldung "unbeendete Bedingung"

Beitrag 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.
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Beitrag 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
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
Heinz Mendax
Beiträge: 50
Registriert: 29.03.2013 12:25
Wohnort: Eisenach

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Beitrag 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
MenschMarkus
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"

Beitrag 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.
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Beitrag 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: ..."
Hygge
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Beitrag 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
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
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
Heinz Mendax
Beiträge: 50
Registriert: 29.03.2013 12:25
Wohnort: Eisenach

Re: Was bedeutet die Meldung "unbeendete Bedingung"

Beitrag 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.
MenschMarkus
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"

Beitrag 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:
Wissen schadet nur dem, der es nicht hat !
Antworten