Die "schönsten" Delphi-Fehler - Version 0.6 (17. August 2005)

Die Seite wird erstellt Kevin Fink
 
WEITER LESEN
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