Guten Morgen
DP!
Das Problem besteht noch:
Zitat:
Der Code Filetostring und Stringtofile scheint die gelesen Daten auf der Festplatte noch offen zu haben; das Löschen geht nur, wenn mein Programm, das die Daten eingelesen hat, geschlossen wird. Gibt es ein Close dazu? Ich habe bei den Streams nachgesehen, konnte aber nichts finden.
Ich habe in der Hilfe nochmals nachgesehen: Ein FileClose soll helfen. Ich habe daher, wie "beschrieben" (ohne weiteren Hinweis oder ein Beispiel), nach dem fs.free in der StringtoFile ein Fileclose(fs.handle); eingefügt:
Delphi-Quellcode:
Procedure StringToFile(const FileName, Str: string);//Inline;
var
fs: TFileStream;
Len: Integer;
begin
fs := TFileStream.Create(FileName, fmcreate);
try
Len := Length(Str);
fs.Write(Str[1], Len);
finally
fs.Free;
Fileclose(fs.handle); //Das funzt net!
end;
end;
Das bringt mir eine
Exception.
Kann es sein, dass ich beim Lesen z. B. von 900 Files hintereinander mit "FileToString" auch alle Handles holen muss und daher nur ein, nämlich das letzte
Handle, schließe?
Oder kann es sein, dass ich das
Handle beim Lesen noch offen habe? Wie gesagt: Streams sind für mich Neuland.
Hat da jemand einen Ansatz zur Lösung?
Vielen Dank für Eure Mühe (Mit der Lösung kommt dann auch Delphi Clean 1.2 Beta ohne dem Beta für Euch raus!
Beste Grüße
Go2EITS