![]() |
TFileStream - Datei bereits geöffnet ?
Hallo zusammen,
folgender Source:
Delphi-Quellcode:
Dieses Stück Code steht an einer Stelle, die mehrere Male pro Minute durchlaufen wird.
Stream := TFileStream.Create(XMLFile, fmCreate or fmOpenWrite);
DomToXmlParser1.WriteToStream(FDoc, 'UTF-8', Stream); // auch schon getestet : CloseHandle(Stream.Handle); Stream.Free; Das Problem ist nun, dass nach einer gewissen Zeit (immer unterschiedlich) das Programm stoppt und sagt, dass die Datei <xmlfile> nicht geöffnet werden könne, weil ein anderer Prozess darauf zugreift. Ich habe jetzt das ganze erstmal in ein try...finally verpackt, aber das löst ja nicht das zugrunde liegende Problem. Ein CloseHandle habe ich auch schonmal probiert. Hat jemand eine Idee ? Ich kann die Datei auch leider nicht geöffnet lassen (geht einfach nicht...). lg Sebastian [edit=SirThornberry]"Problem" aus Titel entfernt - Mfg, SirThornberry[/edit] |
Re: TFileStream Problem
Zitat:
|
Re: TFileStream Problem
Hi !
unmöglich ist gar nichts; aber der Aufwand ist extrem hoch. Ausserdem geht es mir auch ein wenig darum, das Problem zu verstehen. Wenn ich ein Closehandle und/oder Free mache, dann gehe ich doch davon aus, dass die Datei auch genauso gespeichert ist. Selbst wenn ein Cache dazwischen ist, müsste die nächste Lese-Anfrage ja auf den Cache bedient werden und da ist die Datei ja zu... lg Sebastian |
Re: TFileStream Problem
@slemke76: Könntest du deinem Beitrag bitte einen aussagekräftigen Titel geben?
|
Re: TFileStream Problem
Zitat:
lg |
Re: TFileStream Problem
Zitat:
|
Re: TFileStream Problem - Datei bereits geöffnet ?
Hi!
Dann also zurück zum Thema :-) Hat jemand eine Idee ? lg Sebastian |
Re: TFileStream Problem - Datei bereits geöffnet ?
|
Re: TFileStream Problem - Datei bereits geöffnet ?
Hi,
Du könntest mal noch den Modus "fmShareDenyNone" verwenden: Zitat:
|
Re: TFileStream Problem - Datei bereits geöffnet ?
Ich glaube sogar, dass das:
Delphi-Quellcode:
Probleme machen kann. Ich würd das als erstes mit einer if-Abfrage lösen:
fmCreate or fmOpenWrite
Delphi-Quellcode:
Ist nur so eine Vermutung von mir, dass fmCreate zusammen mit fmOpenWrite Probleme machen könnte - ist aber reine Spekulation.
if FileExists(XMLFile) then
Stream := TFileStream.Create(XMLFile, fmOpenWrite) else Stream := TFileStream.Create(XMLFile, fmCreate); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz