1. Vor dem CloseFile() des InFiles mach mal aus dem Except ein Finally so wie beim OutFile, damit dieses immer geschlossen wird.
2. Wenn du wegen eines Fehler die Procedure nach den Try's verlässt mit Exit, dann schmeiss dort die CloseFile() raus, weil bei einem Exit werden die Finally Blöcke trotzdem durchlaufen und somit die Dateien geschlossen (siehe Hilfe Zitat zuvor)
3. Der E/A Fehler von 103 bedeutet, das die Datei nicht geöffnet wurde. Wenn du nun die Datei zuvor durch ein Abbruch nicht ordentlich mit CloseFile() geschlossen hast, dann kann er das nächste mal diese nicht wieder ordentlich öffnen und dann kommt bei Lese-/Schreibversuchen der Fehler. Daher prüfe bitte bei Reset() und ReWrite() auch ab, ob das Öffnen erfolgreich war. Die reine Existenz der Datei sagt nix aus.
Delphi-Quellcode:
{$I-}
Reset(FINFile, 1);
{$I+}
lError := IOError;
If ( lError = 0 ) Then
Begin
// erfolgreich
End
Else
Raise EInOutError.CreateFmt('Fehler %d beim öffnen der Datei: %s', [lError, SysErrorMessage(lError)]);
Definiere lError als Integer lokal in der Procedure...