Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Datei über Sockets senden... Mit Fortschrittsanzeige! (https://www.delphipraxis.net/50108-datei-ueber-sockets-senden-mit-fortschrittsanzeige.html)

ManuMF 20. Jul 2005 18:55


Datei über Sockets senden... Mit Fortschrittsanzeige!
 
Hallo,

ich möchte eine Datei über die Sockets senden, wie es z.B. im Delphi-Forum beschrieben ist
(notfalls auch mit Indy, siehe Code-Library).
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

ManuMF 20. Jul 2005 19:15

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]

CalganX 20. Jul 2005 19:35

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

ManuMF 29. Jul 2005 12:05

Re: Datei über Sockets senden... Mit Fortschrittsanzeige!
 
So, das ganze hat sich nun erledigt.
Aber es gibt ein anderes Problem

mangaka 30. Jul 2005 18:02

Re: Datei über Sockets senden... Mit Fortschrittsanzeige!
 
wäre nett, wenn du die lösung des fortschritts posten würdest

ManuMF 21. Aug 2005 20:30

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 00:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz