Seite 1 von 1

Sibyl - Unklare Fehlermeldung

Verfasst: Mi 30. Mär 2022, 18:55
von ThomasOF
Hallo,

habe beim Compilieren in Sibyl folgende Fehlermeldung bekommen:

Internal Error (Undefined Label in Make_Undefs zeile=340)

und kann damit nix anfangen. Zeile 340 lautet:

procedure TGrafikausgabe.FormCreate(Sender: TObject);

Der Fehler tritt im Original-Sibyl 2.0 genauso auf wie im jüngsten WD-Sibyl. Alle IFDEF's sind korrekt mit ENDIF abgeschlossen.

Was kann ich tun?

ThomasOF

Re: Sibyl - Unklare Fehlermeldung

Verfasst: Do 31. Mär 2022, 09:32
von Rolf
Hast Du die DEFINES in der IDE unter Projekt > Eintellungen > Compiler "Bedingte Compilierung" gemacht?
Das scheint nur zu funktionieren, wenn dort lediglich eine Definition steht
und nicht mehrere.
Ich würd's unbedingt immer direkt im Source mit $DEFINE <Name> machen.

Ansonsten würd ich versuchen so lange bestimmte Bereiche mit (* ... *)
zu deaktivieren bis Du irgendwo ein Problem entdeckst. Oft hat man
in den vorangegangenen Zeilen etwas vergessen.

Rolf

Re: Sibyl - Unklare Fehlermeldung

Verfasst: Di 10. Mai 2022, 15:25
von Martin Vieregg
Der "Internal Error" ist ein nicht abgefangener Compiler-Error, also im Prinzip ein Fehler des Compilers. Eine weitere Taktik ist es, den Compiler zum Stoppen zu zwingen, indem man im Quelltext mit einer unsinnigen Zeichenfolge wie "blabla" den Compiler zum Aufgeben zwingt und dann diese Zeichenfolge an verschiedenen Stellen des Quelltextes wandern lässt, bis man weiß, an welcher Stelle der "internal error" auftrat.

Re: Sibyl - Unklare Fehlermeldung

Verfasst: Di 10. Mai 2022, 19:17
von aschn
Ich kann zwar kein Pascal, aber es sind sind doch immer wieder die gleichen Fehler: Tippfehler bei Variablennamen, undeklarierte Variablen, vergessene Endanweisung. (Bei C ist das bei mir häufig das fehlende Semikolon. So etwas ist beim abermaligen Durchgucken schlecht zu finden. Der Simikolonfehler scheint in C häufig zu sein, sonst wäre die Fehlermeldung dafür nicht perfekt.) Die Compilermeldungen sind nicht immer zutreffend, weil sie manchmal erst bei Folgefehlern auftauchen. Also, alles so wie bereits von Martin und Rolf geschrieben: Teile auskommentieren, bis der Fehler nicht mehr auftritt.

(Damit ein Kompiler brauchbare Fehlermeldungen erzeugt, muss schon ein erheblicher Aufwand betrieben werden, da schon die Variablennamen nicht allgemein bekannt sind.)

(Beim Interpreter sieht es anders aus, weil da meistens die Variablen bekannt sind. Interpreter-Fehlermeldungen sind viel passender. Vielleicht ist das auch mit ein Grund, weshalb Debugger für Compiler entwickelt wurden.)

Um Tippfehler bei der Syntax zu minimieren, bei Variablen geht es häufig erst im Debugger, womit ich mich nicht auskenne, würd ich zumindest einen Editor verwenden, der Syntaxhighlighting hat und passende Klammern findet oder hervorhebt. Die Klammerfehler sind nicht selten. (Bei Pascal kommt AFAIR dazu, dass neben runden auch geschweifte Klammern verwendet werden. Klammern sind auf deutschsprachiger Tastatur nicht so leicht zu tippen.) Häufig entsteht das Ganze dadurch, dass man aus funktionierendem Code einen Block herauskopiert, dabei aber übersieht, dass z.B. eine Endanweisung, wie ein FI, zuviel vorhanden ist. Also sollten nicht nur Klammern, sondern auch Bedingungen hergehoben werden können. Bei einer Endanweisung zu viel sind die Fehlermeldungen sicherlich auch irreführend.

Re: Sibyl - Unklare Fehlermeldung

Verfasst: Mi 11. Mai 2022, 10:57
von Martin Vieregg
Der "Internal Error" ist bei Sibyl wirklich ein Fehler im Compiler, nicht ein Fehler im zu übersetzenden Quelltext. Das kann etwa vorkommen, wenn man eine If-Bedigung mit mehreren Ebenen-Verschachtelungen über mehrere Programmzeilen schreibt, dann gibt es wohl einen Überlauf von Speicherregistern. Es kommt aber so selten vor, dass es nicht wirklich einschränkt. Ein bißchen umformulieren, und dann geht es wieder.