Andreas K. Foerster schrieb:
On Sat, Feb 08, 2003 at 11:23:24PM +0100, Frank Heckenbach wrote:
der GPC gibt bei einem ReadLn nach dem Dateiende ja keine Fehlermeldung aus.
Sollte er eigentlich schon, und meiner tut das auch. Kann sein, dass da mal ein Bug war, der inzwischen behoben ist ...
Könnte vielleicht auch ein Missverständnis vorliegen?
Ich meinte explizit Textdateien (ReadLn macht nur bei Textdateien Sinn).
Eben, deswegen meine ich auch Textdateien. ;-)
Ich habe nochmal meine alten TP Bücher vorgekramt. In TP ist das Verhalten auch genau so definiert.
Dass er nach dem Dateiende munter weiterliest?
Der FPC verhält sich ebenso. Gut so.
Warum sollte das gut sein?
Damit man nicht bei jeder Leseaktion eine Überprüfung durchführen muss, was den Code wesentlich verkomplizieren würde.
Oder eben `{$I-}' verwenden. Aber das musst du eh, denn beim Lesen können ja auch mal andere Fehler auftreten. Grundsätzlich besteht das Problem bei jeder I/O-Operation. Du hast zumindest drei Möglichkeiten:
- Jeden Befehl testen (sehr umständlich).
- Zusammengehörige Blöcke innerhalb von `{$I-}' klammern und am Ende testen.
- Eine globale Fehlerbehandlung schreiben. (Bei meinen CGI-Programmen mache ich das z.B. so, damit unerwartete I/O-Fehler (d.h. die, die ich nicht ausdrücklich mit `{$I-}' abfange), eine Meldung an den Client ausgeben und mir die Fehlermeldung per Mail zuschicken.)
Frank