Entwickler-Ecke

Dateizugriff - Dateien schliessen


JanHH - Mo 14.07.03 18:54
Titel: Dateien schliessen
Hallo,

in meinem Programm gibt es Dateien, die aus historischen Gründen mit SysUtils.FileCreate geöffnet werden und insofern als handle (Integer) intern bekannt sind. Geschlossen werden diese Dateien entsprechend mit SysUtils.FileClose mit dem File-handle als Parameter, und das Programm funktioniert an sich auch, nur sind die Dateien nach dem SysUtils.FileClose-Aufruf dem Betriebssystem immer noch als "geöffnet" bekannt und lassen sich insofern nicht überschreiben. Dies ist aber nötig da sie von dem Programm geändert und neu gespeichert werden müssen.

Es ist sicherlich etwas doof die Dateien auf diese Art und Weise zu verwalten, ist aber wie gesagt historisch so entstanden, und dies zu ändern wäre zu viel Aufwand, wenn es auch eine einfachere Lösung dafür gäbe. Weiss irgendjemand warum die Dateien trotz FileClose-Aufruf noch "geöffnet" sind oder, noch besser, wie man das ändern kann?

Gruß und Dank,
Jan


derDoc - Mo 14.07.03 19:04

Wie wäre denn ein Ersatz durch AssignFile, Readln, Writeln und CloseFile?


JanHH - Mo 14.07.03 19:42

geht leider nicht, muss so bleiben.. liegt an den sonstigen programmstrukturen.


Delete - Di 15.07.03 03:17

Bist du sicher das FileClose korrekt aufgerufen wird? Ich kann mir nicht vorsteöllen, dass das System die datei nach einem Aufruf von FileClose nicht schließt. Ruf mal nach FileClose RaiseLastOSError(); auf.


JanHH - Di 15.07.03 04:25

werd ich ausprobieren.. ich hab den ganzen Kram auch gar nicht selber programmiert, darf ihn jetzt lediglich debuggen ;) aber die FileCreate (oder wie auch immer sie heisst, weiss grad nicht genau)-Funktion liefert einen handle als int zurück, und FileClose bekommt den dann übergeben als Parameter, sollte also gehen.. seltsam.