![]() |
Datei über Sockets senden... Mit Fortschrittsanzeige!
Hallo,
ich möchte eine Datei über die Sockets senden, wie es z.B. im ![]() (notfalls auch mit Indy, siehe ![]() Dabei möchte ich den Fortschritt des Sendens auf der Sender-Seite überwachen (z.B. mit ProgressBar). Kennt jemand vielleicht eine Komplett-Lösung? Mit dem Besispiel auf der o.g. Seite komme ich nicht zurecht (Für dieses Beispiel: woher weiß ich, wann das Senden abgeschlossen ist? Und wie werte ich die Rückmeldung aus?) Danke, ManuMF |
Re: Datei über Sockets senden... Mit Fortschrittsanzeige!
[edit]
Alles zur Übersicht in den 1. Beitrag verschoben. @Chakotay1308: Es ging mir ja nicht ums Pushen, hab nur nicht ans Editieren gedacht :oops: [/edit] |
Re: Datei über Sockets senden... Mit Fortschrittsanzeige!
Hi,
für solche Fälle gibt es die Edit-Funktion. Bitte pushe nicht deinen Beitrag unnötig innerhalb von weniger als 24 Stunden. :warn: Danke, Chris |
Re: Datei über Sockets senden... Mit Fortschrittsanzeige!
|
Re: Datei über Sockets senden... Mit Fortschrittsanzeige!
wäre nett, wenn du die lösung des fortschritts posten würdest
|
Re: Datei über Sockets senden... Mit Fortschrittsanzeige!
:mrgreen: Endlich hab ichs mit Fortschrittsanzeige! :mrgreen:
Delphi-Quellcode:
// Client
{Global} var Groesse : Integer; procedure TSendeForm.DateiSendeButtonClick(Sender : TObject); var FStream : TFileStream; IDS : TidStreamVCL; begin TCPSender.Host := HostEdit.text; if not (DateiOpenDialog.execute) then exit; FStream := TFileStream.Create(DateiOpenDialog.FileName, fmOpenRead); IDS := TidStreamVCL.Create(FStream); with TCPSender do begin Connect; try Socket.Write(IDS, 0, true); finally Disconnect; end; end; FStream.Free; IDS.Free; end; procedure TSendeForm.TCPSenderWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer); begin ProgressBar.Position := Round((AWorkCount / Groesse) * 100); Application.ProcessMessages; end; procedure TSendeForm.TCPSenderWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer); begin Groesse := AWorkCountMax; end; // Server procedure TEmpfangsForm.TCPReceiverExecute(AContext: TIdContext); var FSTream : TFileStream; SizeOfIncomingStream : Integer; IDS : TidStreamVCL; begin if not (DateiSaveDialog.execute) then begin showmessage('Es wurde keine Datei ausgewählt!'); exit; end; FStream := TFileStream.Create(DateiSaveDialog.FileName, fmCreate); IDS := TidStreamVCL.Create(FStream); with AContext.connection do begin try SizeOfIncomingStream := Socket.ReadInteger; Socket.ReadStream(IDS, SizeOfIncomingStream); finally Disconnect; end; end; IDS.VCLStream.Position := 0; FStream.Free; IDS.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 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