Entwickler-Ecke

Internet / Netzwerk - Beim FTP-Upload anzeigen, wieviel KB hochgel. wurde


hitmiccs - Mo 05.01.09 09:49
Titel: Beim FTP-Upload anzeigen, wieviel KB hochgel. wurde
Guten Morgen.

Ich wollte folgendes realisieren - mit folgendem Code (Beispiel) lade ich eine Datei auf meinen FTP-Server:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.Button1Click(Sender: TObject);
begin
 FTP1.Connect;
 FTP1.Put('C:\irgendeinedatei.avi','irgendeinedatei.avi',false);
 FTP1.Disconnect;
end;

procedure TForm1.FTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
begin
 Application.ProcessMessages;
 ProgressBar1.Position:=0;
 ProgressBar1.Max:=AWorkCountMax;
end;

procedure TForm1.FTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
begin
 Application.ProcessMessages;
 ProgressBar1.Position:=AWorkCount;
end;

procedure TForm1.FTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
 ProgressBar1.Max := 100;
end;


Nun hätte ich gerne während des Uploads angezeigt, wieviel von der Datei schon hochgeladen wurde - wenn möglich in KB. Eine Idee hätte ich schon, die Größe der auf dem Server existierenden Datei dauernd mit der auf meinem PC zu vergleichen während des Uploads. Aber wie realisiere ich das? Scheinbar haben zu wenige es, hier und in anderen Delphi-Foren, bisher versucht - denn jede Suche blieb bislang erfolglos :(

Danke und Grüße,
hitmiccs


Delete - Mo 05.01.09 12:05

Steht das nicht in AWorkCount?


jfheins - Mo 05.01.09 12:09

Ja, tut es.

Bei mittleren und großen Dateien ist AWorkCount die Anzahl an Bytes, die bereits hochgeladen wurden ;)
(Bei kleinen Dateien wird die Datei ohne Zwischenschritte hochgeladen)


Delete - Mo 05.01.09 12:21

Mir war doch so *g*. Dann muss man ja nur umrechnen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.FTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
begin
 Application.ProcessMessages;
 ProgressBar1.Position:=AWorkCount;
 lblProgress.Caption := Format('%.2f von %.2f kB',[AWorkCount / 1024, ProgressBar1.Max / 1024]);
end;


hitmiccs - Di 06.01.09 05:08

Vielen Dank, es funktioniert.