Ich habe hier ein Problem, welches ich nicht verstehe.
Ich versuche zu testen, ob ich eine Datei schreiben kann.
Code:
var
lFile : file ;
begin
if not FileExists( pDateiName ) then
exit;
FileMode := fmOpenReadWrite;
assignfile( lFile , pDateiName );
...
end;
Dabei erhalte ich schon beim AssignFile den I/O Error 103.
Wenn ich das per try ... except abfange und assignfile noch einmal aufrufe, dann funktioniert es.
Das Problem taucht nur auf, wenn ich vorher in einer anderen
unit (vollkommen andere Datei) einen nicht erfolgreichen Aufruf (Res <> 0 ) in der folgenden Art hatte (Datei pPath war schreibgeschützt)
Code:
AssignFile( lTestFile , pPath );
if IOResult = 0 then begin
rewrite( lTestFile , 1 );
Res := IOResult;
CloseFile( lTestFile );
end;
Wo ist hier der Fehler?
Setz IOResult auf 0 bevor Du irgendwelche Dateioperationen machst, das ist sicherer. Noch besser: vergiss diese uralten Dateifunktionen und verwende TFilestream et al., da ist die Fehlerbehandlung wesentlich konsistenter.