Die "schönsten" Delphi-Fehler - Version 0.6 (17. August 2005)
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Die »schönsten« Delphi-Fehler Version 0.6 (17. August 2005) Version 0.6 (Update?) Benutzungshinweise: Inhalt Bewegen Sie sich in dieser Datei am besten nur mit Mausklicks sowie den Tasten Bild ↓ und Bild ↑ . Klicken Sie auf »Inhalt« um ein alphabetisch sor- ´ ¹ tiertes Inhaltsverzeichnis der häufigsten Delphi- Fehler angezeigt zu bekommen. Die Verzeichni- ¶ · seinträge sind mit der Fehlerbeschreibung ver- linkt, klicken Sie einfach drauf! Seite 1 von 17 Aktualisierungen: Der Text »Version 0.6 (Update?)« unter dem Lo- go oben rechts führt Sie auf eine Web-Site, auf der Zurück Sie neue Versionen dieser Datei finden werden. Hinweise auf weitere Fehler, Ursachen, Abhilfen usw. sind stets willkommen! Natürlich gelten sol- Vollbild che Hinweise als Unterrichtsbeiträge! Schließen R. Nitzsche (BS Elmshorn)
Inhalt 1 Tipps und Tricks 3 1.1 Delphis Hilfe annehmen . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Das Kreuz mit den Fipptehlern . . . . . . . . . . . . . . . . . . . 4 1.3 Fehlersuche mit showmessage . . . . . . . . . . . . . . . . . . . 5 2 Vorbeugung: Die Delphi-Todsünden 6 Version 0.6 2.1 GUI-Methoden nicht durch Doppelklick erstellt . . . . . . . . . 6 (Update?) 2.2 Nicht speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Speichern unter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Inhalt 2.4 Mehrere Projekte in einem Verzeichnis . . . . . . . . . . . . . . . 7 3 Dialogfelder 8 ´ ¹ 3.1 »’;’ erwartet aber PROCEDURE gefunden.« . . . . . . . . . . . . 8 3.2 »’=’ erwartet aber ’;’ gefunden.« . . . . . . . . . . . . . . . . . . . 8 3.3 »Benachrichtigung über Debugger-Exception . . . ’Externe Ex- ¶ · ception’ . . . « . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.4 »Benachrichtigung über Debugger-Exception . . . ’Fehler bei Be- Seite 1 von 17 reichsprüfung’ . . . « . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.5 »Quelldatei nicht gefunden: . . . « . . . . . . . . . . . . . . . . . . 10 Zurück 4 Textmeldungen 11 4.1 »’.’ erwartet, aber ’;’ gefunden« . . . . . . . . . . . . . . . . . . . 11 4.2 »’;’ erwartet, aber ’. . . ’ gefunden« . . . . . . . . . . . . . . . . . . 11 Vollbild 4.3 »’;’ nicht erlaubt vor einem ELSE« . . . . . . . . . . . . . . . . . 11 4.4 »Anweisung erwartet, Procedure gefunden« . . . . . . . . . . . 12 Schließen 4.5 »Diese Form des Methodenaufrufs ist nur in Methoden von ab- geleiteten Typen erlaubt« . . . . . . . . . . . . . . . . . . . . . . . 12 4.6 »Inkompatible Typen« . . . . . . . . . . . . . . . . . . . . . . . . 12
4.7 »Operator oder Semikolon fehlt« . . . . . . . . . . . . . . . . . . 13 4.8 »Operator ist auf diesen Operandentyp nicht anwendbar« . . . 13 4.9 »Undefinierter Bezeichner: ’. . . ’« . . . . . . . . . . . . . . . . . . 14 4.10 »Undefinierter Bezeichner: ’ControlFrm’« . . . . . . . . . . . . . 15 4.11 »Ungenügende Forward- oder External-Deklaration: ’. . . ’« . . . 15 5 Ärger mit der Delphi-Umgebung 16 5.1 »Ich kann keine GUI-Objekte auf das Formular ziehen!« . . . . . 16 Version 0.6 5.2 »Mein Objekt-Inspektor und/oder meine Objekt-Hierarchie (Update?) sind weg! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.3 »Mein Formular-Editor ist weg!« . . . . . . . . . . . . . . . . . . 16 Inhalt ´ ¹ ¶ · Seite 2 von 17 Zurück Vollbild Schließen
1 Tipps und Tricks 1.1 Delphis Hilfe annehmen Version 0.6 (Update?) Delphis Fehlermeldungen sind meistens hilfreich. Lesen Sie zunächst einmal die Fehlermeldung und überlegen Sie sich, was Delphi Ihnen damit sagen will. Inhalt Dabei werden Ihnen die Fehlerbeschreibungen in dieser Datei helfen. Beachten sollten Sie aber auch folgendes: ´ ¹ • Es kann gut sein, dass der Fehler sich oberhalb der gemeldeten Zeile be- findet. Es ist aber zwecklos, noch weiter unten zu suchen, da kann der ¶ · Fehler nicht stecken! Allerdings können weiter unten auch noch Fehler sein, aber eben nicht der gemeldete. . . Seite 3 von 17 • Da Fehler weitere Fehler verursachen können, sollten Sie sich als Anfän- ger zunächst immer nur auf den ersten gemeldeten Fehler stürzen und Zurück dann einen neuen Übersetzungsversuch starten. • Ein Doppelklick auf einen Fehler markiert die Zeile des Quelltextes, in Vollbild der der Fehler auftrat. • Wenn die Fehlermeldung nicht komplett angezeigt wird, können Sie mit Schließen dem Mauszeiger einige Zeit auf der Fehlermeldung verweilen und be- kommen dann die komplette Meldung angezeigt.
1.2 Das Kreuz mit den Fipptehlern Für Delphi sind zwei Bezeichner (Namen z. B. für Methoden oder Variablen) nur dann identisch, wenn sie bis ins kleinste Detail übereinstimmen. Das fol- gende Beispiel zeigt, dass man da manchmal schon zweimal hinschauen muss: var Deta1l: integer; Version 0.6 begin (Update?) Detail := 120; Inhalt Folgende Informationen sind bei der Tippfehlersuche interessant: ´ ¹ • Delphi unterscheidet nicht zwischen Groß- und Kleinschreibung. • Bezeichner dürfen Ziffern enthalten, aber niemals als erstes Zeichen! ¶ · • Das einzige erlaubte Sonderzeichen ist der Unterstrich ( _ ). Sowohl Leer- als auch Sonderzeichen wie ß und und Umlaute sind absolut tabu! Seite 4 von 17 • Bezeichner dürfen beliebig lang sein, aber »nur« die ersten 63 sind rele- vant. Zurück • begin, end, while usw. sind reservierte Wörter. Sie können Sie daher nicht mehr als Bezeichner für eigene Methoden oder Variablen verwen- Vollbild den. Schließen Entspricht ein Bezeichner nicht diesen Anforderungen, kann es sehr drollige Fehlermeldungen geben.
1.3 Fehlersuche mit showmessage Delphi meldet zwar keine Syntaxfehler mehr, aber das Programm tut trotzdem nicht das, was Sie wollen? Wenn Sie showmessage(’Anfrage VorDemAbgrund wurde aufgerufen!’); in die Anfrage VorDemAbrund einfügen, stoppt Ihr Programm jedesmal an dieser Stelle und zeigt die folgen- de Dialogbox an: Version 0.6 (Update?) Inhalt ´ ¹ Wenn Sie nun einen oder mehrere Aufrufe von showmessage geschickt in Ih- ¶ · rer Unit verteilen, können Sie leichter feststellen, was Ihr Programm eigentlich tut. Seite 5 von 17 Hinweis: Eventuell müssen Sie noch die Unit dialogs einbinden, in der showmessage deklariert ist! Zurück Vollbild Schließen
2 Vorbeugung: Die Delphi-Todsünden 2.1 GUI-Methoden nicht durch Doppelklick erstellt Erstellen Sie alle GUI-Methoden immer durch Doppelklick (bzw. über den Ob- jektinspektor). Versuchen Sie es auf gar keinen Fall durch kopieren oder Eintip- Version 0.6 pen! (Update?) Inhalt 2.2 Nicht speichern Vergessen Sie nicht, Ihre Arbeit regelmäßig zu speichern! ´ ¹ Mit Datei/Alles Speichern (oder Strg + Umschalten ⇑ + S ) speichern Sie das gesamte Projekt. ¶ · Außerdem können Sie Delphi anweisen, vor jedem Übersetzen (Com- Seite 6 von 17 pilieren) automatisch alle Dateien zu speichern. Wählen Sie dazu Tools/Umgebungsoptionen/Optionen für Autospeichern: Zurück Vollbild Schließen
2.3 Speichern unter . . . Ihr Delphi-Projekt besteht aus einer Vielzahl von Dateien. Wenn Sie ihre Da- tei uControl.pas unter einem anderen Namen speichern, kann das völlig unerwartete Folgen haben. Speichern Sie also nicht unter einem anderen Namen! Version 0.6 (Update?) 2.4 Mehrere Projekte in einem Verzeichnis Inhalt Erstellen Sie auf keinen Fall ein Projekt in einem Ordner in dem sich bereits ein Projekt befindet. Die Folgen können katastrophal sein! ´ ¹ ¶ · Seite 7 von 17 Zurück Vollbild Schließen
3 Dialogfelder 3.1 »’;’ erwartet aber PROCEDURE gefunden.« Version 0.6 (Update?) Inhalt Ursache: Dieser Fehler wird beim Übersetzen der Deklarationen gemeldet. Am Ende der vorherigen Zeile fehlt eine Semikolon. ´ ¹ Abhilfe: Ergänzen Sie das Semikolon. ¶ · 3.2 »’=’ erwartet aber ’;’ gefunden.« Seite 8 von 17 Zurück Vollbild Ursache: Dieser Fehler wird beim Übersetzen der Deklarationen gemeldet. In der Zeile befindet sich eine Methoden- oder Anfragendeklaration mit einem Punkt im Schließen Namen, z. B. TControlFrm.UmDieBaeume Abhilfe: Entfernen Sie den Punkt und die davor stehende Klassenbezeichnung.
3.3 »Benachrichtigung über Debugger-Exception . . . ’Externe Exception’ . . . « Version 0.6 (Update?) Ursache: Der Roboter ist vom Tisch gefallen und existiert nicht mehr. Inhalt Abhilfe: Programm beenden oder zurücksetzen ( Strg + F2 in Delphi), ggf. neu starten. ´ ¹ oder: Ursache: Der Roboter (bzw. ein anderes Item wurde nicht mit Create erzeugt. ¶ · Abhilfe: create durchführen. Seite 9 von 17 Zurück Vollbild Schließen
3.4 »Benachrichtigung über Debugger-Exception . . . ’Fehler bei Bereichsprüfung’ . . . « Version 0.6 (Update?) Ursache: Sie haben einem Roboter oder eineam anderen Item eine Position zugewiesen, Inhalt die außerhalb der Welt liegt. Die Spalte muss zwischen ’A’ und ’N’, die Zeile zwischen 1..12 liegen. ´ ¹ Abhilfe: Verwenden Sie eine zulässige Position. ¶ · 3.5 »Quelldatei nicht gefunden: . . . « Seite 10 von 17 Zurück Vollbild Ursache: Harmloses Fehlerchen. Schließen Abhilfe: Drücken Sie auf »Abbrechen« und beachten Sie ggf. die Fehlermeldungen dort.
4 Textmeldungen 4.1 »’.’ erwartet, aber ’;’ gefunden« Ursache: Das letzte end einer Unit muss mit einem Punkt statt einem Semikolon been- det werden. Vermutlich hat die letzte Methode der Unit ein end; zu viel! Version 0.6 Abhilfe: Entfernen Sie das überflüssige end; oder ersetzen Sie das Semikolon durch (Update?) einen Punkt. Inhalt 4.2 »’;’ erwartet, aber ’. . . ’ gefunden« ´ ¹ Ursache: Semikolon (oder end;) am Ende der vorherigen Zeile vergessen. Abhilfe: Ergänzen Sie das Semikolon. ¶ · oder: Seite 11 von 17 Ursache: Bei Auftreten im Methodenkopf: Tippfehler in der Klassenbezeichnung, z. B. TKontrolFrm Zurück Abhilfe: Korrigieren Sie die Schreibweise. Vollbild 4.3 »’;’ nicht erlaubt vor einem ELSE« Schließen Ursache: Wohl einer der häufigsten Fehler. Abhilfe: Entfernen Sie das Semikolon. ;-)
4.4 »Anweisung erwartet, Procedure gefunden« Ursache: Delphi ist beim Lesen eines Methodenrumpfes und hat das Schlüsselwort procedure gefunden, das aber nicht Teil des Methodenrumpfes sein kann, sondern wahrscheinlich der Methodenrumpf der nächsten Methode ist. Abhilfe: Beenden Sie die Implementation der einen Methode durch end;. Version 0.6 (Update?) 4.5 »Diese Form des Methodenaufrufs ist nur in Methoden Inhalt von abgeleiteten Typen erlaubt« Ursache: Diese Methode kennt keine geerbte (inherited) Methode. Mit Sicherheit ist ´ ¹ der eigentliche Fehler jedoch ein anderer: Sie haben im Methodenkopf die An- gabe der Klasse (TControlFrm o. ä.) vergessen. ¶ · Abhilfe: Ergänzen Sie diese Angabe. Seite 12 von 17 4.6 »Inkompatible Typen« Zurück Ursache: Sie versuchen gerade Äpfel mit Birnen zu vergleichen oder so ähnlich. Wahr- scheinlich haben Sie nicht korrekt geklammert. Vollbild Abhilfe: Überprüfen Sie die Klammerung. (Wahrscheinlich müssen Sie welche ergän- zen.) Schließen Wenn der Fehler in einer Zuweisung auftritt: Siehe Fehler 4.8!
4.7 »Operator oder Semikolon fehlt« Ursache: Semikolon am Ende der vorherigen Zeile vergessen. Abhilfe: Ergänzen Sie das Semikolon. Version 0.6 4.8 »Operator ist auf diesen Operandentyp nicht anwendbar« (Update?) Ursache: Sie versuchen gerade Äpfel mit Birnen zu multiplizieren oder so ähnlich. Einer Inhalt der Operanden passt überhaupt nicht zu den anderen. Abhilfe: Überprüfen Sie die Klammerung. (Wahrscheinlichste Fehlerquelle) ´ ¹ Überprüfen Sie die Typen aller Operanden und ändern Sie diese ggf. ¶ · Seite 13 von 17 Zurück Vollbild Schließen
4.9 »Undefinierter Bezeichner: ’. . . ’« Ursache: Sie haben die angegebene Methode oder Anfrage zwar implementiert aber nicht deklariert. Abhilfe: Falls Sie die Methode bereits deklariert haben, überprüfen und korrigieren Sie ggf. die Schreibweise (Buchstabendreher). Version 0.6 oder: (Update?) Ursache: Sie haben eine Methode aufgegrufen, die sie weder deklariert noch implemen- Inhalt tiert haben. Abhilfe: Überprüfen Sie, ob Sie sich vertippt haben und holen Sie ggf. Deklaration und ´ ¹ Implementation nach oder korrigieren Sie den Methodennamen bei Deklarati- on und Implementation. ¶ · oder: Ursache: Sie haben die Angabe des Objektnames vergessen bzw. einen falschen Ob- Seite 14 von 17 jektnamen angegeben. (z. B. haben Sie RD1.vor; gemeint, aber nur vor; ge- schrieben) Zurück Abhilfe: Ergänzen Sie RD1 oder with RD1 do begin Vollbild ... end; Schließen
4.10 »Undefinierter Bezeichner: ’ControlFrm’« Ursache: Der Fehler tritt in der Datei uKarel.pas oder einer anderen nicht von Ih- nen bearbeiteten Datei auf. Vermutlich haben Sie haben das Dialogfenster ControlFrm umbenannt als Sie ein GUI-Objekt umbenennen wollten. Abhilfe: Nennen Sie das Dialogfenster wieder ControlFrm. Version 0.6 (Update?) 4.11 »Ungenügende Forward- oder External-Deklaration: Inhalt ’. . . ’« Ursache: Sie haben die angegebene Methode oder Anfrage zwar deklariert aber nicht ´ ¹ implementiert. Abhilfe: Falls Sie die Methode bereits implementiert haben, überprüfen und korrigieren ¶ · Sie ggf. die Schreibweise (Buchstabendreher). Seite 15 von 17 Zurück Vollbild Schließen
5 Ärger mit der Delphi-Umgebung 5.1 »Ich kann keine GUI-Objekte auf das Formular ziehen!« Ursache: Ihre Anwendung wird zur Zeit ausgeführt und dem laufenden Formular kön- nen Sie keine GUI-Objekt hinzufügen. In diesem Fall sehen sie auch nicht die Version 0.6 kleinen schwarzen Ausrichtungspunkte auf dem Formular. (Update?) Abhilfe: Beenden Sie Ihre Anwendung! Inhalt 5.2 »Mein Objekt-Inspektor und/oder meine Objekt- ´ ¹ Hierarchie sind weg! ¶ · Ursache: Passiert manchmal nach dem Abbrechen der Anwendung. Abhilfe: Wählen Sie Ansicht/Objektinspektor oder F11 bzw. Seite 16 von 17 Ansicht/Objekt-Hierarchie oder Umschalten ⇑ Alt F11 ! Zurück 5.3 »Mein Formular-Editor ist weg!« Vollbild Ursache: Wahrscheinlich haben Sie ihn selbst geschlossen. ;-) Schließen Abhilfe: Wählen Sie Ansicht/Formulare bzw. F12 und suchen Sie sich ein Formu- lar aus! Bei Karel D. Robot wählen Sie bitte ControlFrm!
Versionsgeschichte 0.6 Abschnitt »Ärger mit der Delphi-Umgebung« ergänzt. 0.5 Einige Fehler ergänzt, neuer Abschnitt »Tipps und Tricks«, Gliederungs- nummerierung an DUDEN angepasst, Navigationspanel verschlankt. 0.2 neuer Abschnitt »Vorbeugung«, zahlreiche Fehler ergänzt Version 0.6 (Update?) 0.1 erste Version Inhalt ´ ¹ ¶ · Seite 17 von 17 Zurück Vollbild Schließen
Sie können auch lesen