![]() |
[Indy] Downloadgröße, Speed, Restzeitanzeige
So hallo,
ich habe schon seid längerem meine eigene Download Fortschrittsanzeige gebastelt, die war mehr schlecht als recht. Nun habe ich noch dazu die: Restzeitanzeige von: ![]() eingefügt, und nun geht garnix mehr! Weil bei ihm viele Allgemein genutzte Variablen anders Deklariert waren, als bei mir... Nun zu meiner Frage: Könnte jemand, der schon eine Funktionierende komplette DownloadStatusanzeige hat, sein Code hier Posten? Eine, wo alle Deklarationen stimmen usw. Also das Komplette mit: Download: xx kb von yyy kb Speed: yy kb/s Prozent: xxx % Restzeit: xxx Minuten und yy Sekunden und zwar so, dass sie alle miteinandder Funktionieren^^ dankeschön! |
Re: [Indy] Downloadgröße, Speed, Restzeitanzeige
Hat denn keiner sowas?
|
Re: [Indy] Downloadgröße, Speed, Restzeitanzeige
Hallo,
habe mal vor Jahren über SMTP eine Statusanzeige fürs Versenden von eMails gemacht - vielleicht hilft es Dir weiter. Gruß RoGa
Delphi-Quellcode:
var STime: TDateTime;
AverageSpeed: Double = 0; BytesToTransfer: integer; (****************************************************) procedure TMailSendingDialog.IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); var i: integer; begin SendingStatusMemo.Lines.Add('Nachricht wird versendet...'); SendingStatusMemo.Refresh; STime := Now; AverageSpeed := 0; SendingProgress.MinValue := 0; if AWorkCountMax > 0 then SendingProgress.MaxValue := AWorkCountMax else begin BytesToTransfer := BytesToTransfer + Length(MemoMessage.Text); if MailPictureMode = 1 then begin BytesToTransfer := BytesToTransfer + GetFileSize(GaleryPath + ImageFileName); end else begin for i := 0 to 99 do begin if aSendThumb[i].Visible then BytesToTransfer := BytesToTransfer + GetFileSize(GaleryPath + aSendThumb[i].Hint); end; end; SendingProgress.MaxValue := BytesToTransfer; end; end; (****************************************************) procedure TMailSendingDialog.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); var TotalTime: TDateTime; H, M, Sec, MS: Word; DLTime: Double; SpeedTime: string; begin Application.ProcessMessages; TotalTime := Now - STime; DecodeTime(TotalTime, H, M, Sec, MS); Sec := Sec + M * 60 + H * 3600; DLTime := Sec + MS / 1000; if DLTime > 0 then AverageSpeed := (AWorkCount / 1024) / DLTime; //Verbleibende Zeit if AverageSpeed > 0 then begin Sec := Trunc(((SendingProgress.MaxValue - AWorkCount) / 1024) / AverageSpeed); SpeedTime := Format('%2d:%2d:%2d', [Sec div 3600, (Sec div 60) mod 60, Sec mod 60]); LabelTime.Caption := FormatDateTime('hh:nn:ss', StrToTime(SpeedTime)); end else LabelTime.Caption := ''; //Geschwindigkeit LabelSpeed.Caption := FormatFloat('0.00 KB/s', AverageSpeed); //Statusanzeige if AWorkCount < SendingProgress.MaxValue then SendingProgress.Progress := AWorkCount; end; (****************************************************) procedure TMailSendingDialog.IdSMTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin SendingProgress.Progress := 0; SendingProgress.Refresh; AverageSpeed := 0; LabelTime.Caption := ''; LabelSpeed.Caption := ''; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 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