Noch ein paar Zusatzinfos zu Compilermeldungen
- Überblick
- Compilermeldungen
- Noch ein paar Zusatzinfos zu Compilermeldungen
- Exceptions
- Nutzen von Exceptions
- Fazit
Compilermeldungen selbst erzeugen
Ja, sowas geht. Wer schon immer mal Compilermeldungen haben wollte, aber nie welche hatte(;-)) so kann man sie auch selbst erzeugen:
Spezielle Meldungen
Die Direktive platform; hinter einer Methode oder Unit erzeugt folgende Warnung:
Beispiel:
1 2 3 4 | unit Unit1 platform; // oder private procedure Test; platform; |
Ebenso ist es mit den Direktiven library und deprecated. Diese erzeugen die Warnungen:
bzw.
Benutzerdefinierte Meldungen
Die Direktive $message kann frei definierbare Fehlermeldungen erzeugen.
ohne Meldungstyp wird ein Hinweis angezeigt:
1 | {$message 'Du hast ja deine Hausaufgaben immer noch nicht gemacht!'} |
Hinweis:
1 | {$message HINT 'Die Welt geht unter, aber mach dir keine Sorgen, du kriegst das eh nicht mit...'} |
Warnung:
1 | {$message WARN 'Gleich gibts Bombenalarm. Du solltest dich also schon mal drauf vorbereiten, schreiend rauszurennen...'} |
Fehler:
1 | {$message ERROR 'Houston, wir haben ein Problem.'} |
Fataler Fehler:
1 | {$message FATAL 'Du wirst jetzt assimiliert. Widerstand ist zwecklos...'} |
Was sonst noch passieren kann
Keine eigentliche Compilermeldung, kommt aber trotzdem von Zeit zu Zeit:
Einfachste Erklärung dafür: Die Datei ist außerhalb von Delphi geöffnet. Delphi hat also keinen Schreibzugriff und kann sie deshalb nicht neu erstellen.
Linker Errors
Der Linker ist der Teil von Delphi, der die kompilierten Units(dcu = DelphiCompiledUnit) zu einer exe-Datei zusammenbaut. Wenn nun der Linker einen Fehler verursacht bzw. bemerkt, gibt der das natürlich auch irgendwie zu verstehen. Und zwar genau so, wie der Compiler in solchen schönen Meldungen. Im Normalfall hat man mit solchen Meldungen wenig zu tun, da sie ausgesprochen selten auftreten(außer man hat das Glück mit dem C++Builder arbeiten zu müssen, da passiert sowas leider recht häufig. Insbesondere, wenn man sich mit den Header-Dateien vertan hat… :?).
Linkerfehler haben meist nur eine Nummer nach dem Schema: L