EndIf without If - wie Fehler suchen?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Hubsi

Betreff: EndIf without If - wie Fehler suchen?

BeitragMi, Mai 12, 2010 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Nabend beisammen.

Ich stehe gerade vor dem Problem das ich den Fehler "Endif without If" bekomme, mein so ziemlich allerliebster Fehler, gleich nach Next without For Very Happy Konkret geht es darum das ich so ziemlich keine Idee mehr habe wie ich das Problem lokalisieren soll. Ich habe inzwischen alle Passagen die neu sind seit dem letzten funktionieren rausgeschmissen, bzw. auskommentiert, aber es wird nicht besser. Der Code ist pingeligst eingerückt, If...EndIf Konstrukte und Schleifen werden schon beim schreiben gewohnheitsmäßig quasi "frei von Inhalt" schon geschlossen. Ich weiß nicht weiter. Hat da jemand einen Tip für mich wie man ein solches Problem angehen sollte? Ich steh im Wald Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Xeres

Moderator

BeitragMi, Mai 12, 2010 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Elseif ohne Bedingung drin?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

BladeRunner

Moderator

BeitragMi, Mai 12, 2010 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
vom Debuger markierte Zeile nehmen und das dort vorkommende scopebegrenzende Schlüsselwort als Randpunkt für die Suche nehmen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Omenaton_2

BeitragDo, Mai 13, 2010 8:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe schon mal die Erfahrung gemacht, daß BlitzBasic nicht nur wenn ein "If Then Konstrukt" nicht richtig ist diese Fehlermeldung ausgibt. Die Ursache kann auch was ganz Anderes sein, aber es ist dann meist ein Syntax Fehler. Kann auch mit Types zu tun haben. Vielleicht eine Reihenfolge Problem.

Zur Not gehe deinen kompletten Kod durch und achte auf alle Syntax Probleme. Entferne kurzfristig Programmteile um diese ausschließen zu können.

Midimaster

BeitragDo, Mai 13, 2010 9:10
Antworten mit Zitat
Benutzer-Profile anzeigen
wieviele Zeilen umfasst denn der Code? Kannst du ihn hier reinstellen?

Es muss tatsächlich nicht unbedingt an einem IF liegen. Auch andere Strukturen, die ein Schleifenende benötigen können im ungünstigen Fall zu einer solchen Meldung führen (Repeat, Select, Function, ...etc

Möglicherweise ist aber auch eine IF-Abfrage, die gar kein Endif benötigt hätte:

BlitzBasic: [AUSKLAPPEN]
If A=3 Then B=4
If C=5 Then
D=8
EndIf
EndIf


sowas ist mir schon passiert!

Der Tipp hierzu:

1.
Gliedere zunächst alle Funktionen in ein zweites Script aus und include das in das Original-Script. Mit etwas Glück tritt der FEhler dann im einen oder anderen Dokument auf.

2.
Mache auch einzeiligen IFs jetzt richtige Dreizeiler mit eigener ENDIF

3.
Prüfe alle SELECT und REPEAT und FUNCTION-Strukturen. Mir auch schon passiert: Als Abschluss eines SELECT habe ich ENDIF geschrieben.

4.
Nutze die Gelegenheit und strukturiere den Code neu: Alle IF/ENDIF-Strukturen, bei denen das IF mehr als eine Bildschirmseite vom ENDIF entfernt liegt sind zu lang und sollten in Funktionen ausgegliedert werden. Bedenke dabei aber die Variablen, die dann ein GLOBAL benötigen oder in die Funktion übergeben werden müssen.


Und noch eine ganz schlichte Idee zum Schluss: Vielleicht ist es ja wirklich "zuviel", dieses eine ENDIF?

Hubsi

BeitragDo, Mai 13, 2010 9:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank erstmal. Der Tip von Omenaton_2, wie auch Midimaster in Punkt 1. schrieb hat geholfen, wenn auch nicht so wie ich erwartete. Ich habe einen Teil an dem ich eine Änderung vornahm ausgelagert in eine eigene Datei und geprüft -> kein Fehler. Probehalber dann nochmal den Originalcode ohne den betreffenden Teil gecheckt -> keine Fehler Shocked Total verwirrt den verdächtigen Teil wieder reinkopiert -> keine Fehler... jetzt versteh ichs gar nicht mehr? Der Block wurde nur per Copy & Paste ausgelagert und per Strg+Z wieder eingefügt, also mit absoluter Sicherheit kein Byte verändert und plötzlich wäre er frei von Syntaxfehlern? Ich arbeite mit IDEal und B3D Version 1.105. Sind da irgendwelche Bugs bekannt?

Edit: @Midimaster: Der Code umfasst rund 2000 Zeilen, ist etwas viel das hier alles reinzuquetschen Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Midimaster

BeitragDo, Mai 13, 2010 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei 2000 Zeilen wäre aber schon eine Unterteilung in mehrere *.BB-Dateien nötig, oder?

Ich finde, 500 Zeilen sind vernünftig, bei 1000 Zeilen ist die Schmerzgrenze erreicht. Gerade Funktionen, die bereits 100% laufen, müssen nicht im akt. Code verbleiben.

Ich arbeite aber auch mit BMAX, wo sich das alleine schon wegen der Option Quickbuild lohnt. Aber unter BB ist das glaube ich etwas "sonderbar" mit den Geltungsbreichen von Variablen, wenn der Code auf meherere Scripte verteilt ist, oder?

Hubsi

BeitragDo, Mai 13, 2010 9:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich meinte den Code mitsamt der Includes Very Happy Der "Fehler" befand sich zwar in der Hauptdatei, aber bei sowas kann sich die eigentliche Ursache genausogut in einer der Includes verstecken und... ja. Sie verstehen, Monsieur? Mr. Green IDEal ist dahingehend ja geradezu wunderbar. Man legt ein Projekt an, bindet die Includes da ein und egal welche Datei man "versucht" zu starten, es startet die Hauptdatei, alles ist geordnet und... ich schweife ab Very Happy Vielen Dank aber für die schnelle Hilfe, auch wenn ich nicht verstehe warum und weshalb das überhaupt auftrat.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group