![]() |
TFileStream -> Datei bereits in Benutzung
Delphi-Quellcode:
Wenn ich diese Prozedur 1 mal ausführe dann funktioniert sie, aber wenn ich sie dann nochmal ausführe mit einem anderen Listboxeintrag dann kommt der Fehler dass die Datei von einem anderen Prozess benutzt wird, was nicht seien kann.
procedure TForm1.Button1Click(Sender: TObject);
var FS:Tfilestream; URL:String; blockliste: Array of AnsiString; begin URL:= 'http://.../server_'+listbox3.items.strings[ListBox3.ItemIndex]; FS:=Tfilestream.Create('SpammerList.dat',fmOpenWrite,fmShareDenyNone); IdHTTP1.Get(URL,FS); FreeAndNil(FS); IdHTTP1.Free; end; |
Re: TFileStream -> Datei bereits in Benutzung
Was erhältst Du, wenn Du statt
Delphi-Quellcode:
direkt
FreenAndNil(FS);
Delphi-Quellcode:
verwendest?
FS.Free;
FS := nil; BTW: Es müsste heißen:
Delphi-Quellcode:
FS:=Tfilestream.Create('SpammerList.dat',fmOpenWrite OR fmShareDenyNone);
|
Re: TFileStream -> Datei bereits in Benutzung
Ich habe denselben Fehler und ich kann mir nicht vorstelen was Falsch ist...
|
Re: TFileStream -> Datei bereits in Benutzung
Auf den ersten Blick fällt mir auf das da try.. fehlt. Wenn die Http-Abfrage einmal fehl schlägt wird die Datei also nicht frei gegeben.
|
Re: TFileStream -> Datei bereits in Benutzung
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var FS:Tfilestream; URL:String; blockliste: Array of AnsiString; filename, s : string; begin URL:= 'http://.../server_'+listbox3.items.strings[ListBox3.ItemIndex]; filename := 'SpammerList.dat'; if FileExists(filename) then FS:=Tfilestream.Create(filename,fmOpenWrite,fmShareDenyNone) else // Datei erzeugen, wenn noch nicht vorh. FS:=Tfilestream.Create(filename,fmCreate,fmShareDenyNone); try FS.Seek(0, soFromEnd); // ans Ende springen IdHTTP1.Get(URL,FS); s := #13#10 + StringOfCar('=', 80)+#13#10; // Trennzeile ====== FS.WriteBuffer(s[1], Length(s)); // Trennzeile schreiben finally FS.Free; // ein normales Free ist hier vollkommen ausreichend end; IdHTTP1.Free; // bist du sicher, dass dieses Objekt freigegeben werden soll? end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 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