![]() |
Problem mit TStream
Hallo,
Also mein Problem liegt darin das ich eine Datei über eine TCP Verbindung geschickt bekomme von einem Server klappt auch alles aber wenn die Datei dann angekommen ist sagt mir das Programm Datei kann nicht geöffnet werden weil Sie bereits von einem anderne Prozess verwendet wird :gruebel: Keine Ahnung was das heissen soll! Muss ich die Datei nach dem erstellen schliessen? Und wenn wie? Habe das erstellen der Datei mit folgendem Code gelöst: FStream := TFileStream.Create('c:\screenread.jpg', fmOpenWrite or fmShareDenyNone); Wenn ich die Datei nach dem Sie erstellt worden ist schliessen muss wie soll das gehn mit Closefile jawohl nicht oder? |
Re: Problem mit TStream
mit
Delphi-Quellcode:
FStream.Free;
|
Re: Problem mit TStream
Danke erstmal,
Klappt aber nicht habe ich schon probiert ich stelle mal meinen ganzen Code rein so der Server arbeitet ohne Probleme deswegen habe ich nur den Client Code rein gestellt! Wenn ich den Code ausführe schreibt er die Datei auch auf platte er kann sie aber nicht in dem Image Feld zeigen er sagt immer Error Datei wird bereits von einem anderen Prozess benutzt! ICh verstehe das nicht allerdings Programmiere ich auch noch nicht solange und vielleicht ist es nur ein ganz einfacher Fehler währe echt froh wenn ich das hinkreigen könnte, und mir einer Helfen kann! Eigentlich brauche ich nur unter dem Ereigniss OnCLientread eine Anweisung die mir sat wenn die Datei komplett übertragen ist denn die OnClientread Procedur wird ja solange ausgeführt bis die Datei komplett ist! Aber das Problem ist wie kann ich abfangen wann die Datei komplett übertragen ist??? Dann könnte ich den Stream mit TStream.free frei machen!
Code:
procedure TForm1.Button8Click(Sender: TObject);
begin if Assigned(FStream) then begin FStream.Free; FStream := nil; end; if fileexists('c:\test.jpg') then begin ClientSocket1.Socket.SendText('hole_datei'); //Befehl für Server zum holen der Datei FStream := TFileStream.Create('c:\test.jpg', fmOpenWrite or fmShareDenyNone); //Datei erstellen end else exit; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin form1.Caption := 'CONNECTED'; end; procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); begin Form1.Caption := 'NOT CONNECTED'; end; procedure TForm1.ClientSocket1Connecting(Sender: TObject; Socket: TCustomWinSocket); begin Form1.Caption := 'CONNECTING'; end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); // In dieser Procedur muss es doch ne möglichkeit geben raus zu finden ob die Datei // komplett ist oder nicht und wenn sie komplett ist mache folgendes mit der IF Anweisung oder // so var iLen: Integer; datei:file; Bfr: Pointer; MyString:string; begin iLen := Socket.ReceiveLength; GetMem(Bfr, iLen); try Socket.ReceiveBuf(Bfr^, iLen); FStream.Write(Bfr^, iLen); finally FreeMem(Bfr); end; end; procedure TForm1.FormCreate(Sender: TObject); begin FStream := nil; end; procedure TForm1.FormDestroy(Sender: TObject); begin if Assigned(FStream) then begin FStream.Free; FStream := nil; end; end; Hoffe von euch kann mir jemand Helfen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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