Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Progressbar zu langsam?? (https://www.delphipraxis.net/109117-progressbar-zu-langsam.html)

Svenkan 24. Feb 2008 19:15


Progressbar zu langsam??
 
Folgendes Problem: ich habe ein Onlineupdate in meinem Programm. Allerdings ergibt sich das Problem, dass der 'Verbleibend'-Counter eher bei 0 ankommt, als die Progressbar am Ende.

Delphi-Quellcode:
procedure TVPlan_Update.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
var aktuell: Integer;
begin
 Application.ProcessMessages;

 if (GetTickCount - FTime) >= 1000 then
 begin
   Label12.Caption := Format('%.2f KB/s', [(AWorkCount - FBytes) / (GetTickCount - FTime)]);
   FTime := GetTickCount;
   FBytes := AWorkCount;
 end;

 Fortschritt.Position:=AWorkCount;

 aktuell:=Round((Fortschritt.Max-AWorkCount)/1024);

  if aktuell>1024 then
   Label10.Caption:=FloatToStr(RoundTo((aktuell/1024),-2))+' MB ('+FloatToStr(Round((AWorkCount/Fortschritt.Max)*100))+' %)'
  else
   Label10.Caption:=IntToStr(aktuell)+' KB ('+FloatToStr(Round((AWorkCount/Fortschritt.Max)*100))+' %)';
end;

Larsi 24. Feb 2008 19:26

Re: Progressbar zu langsam??
 
Vielleicht solltest einen Timer benutzen oder du hast das Maximum der Progressbar falsch!

Svenkan 24. Feb 2008 20:40

Re: Progressbar zu langsam??
 
Hallo,

das Maximum der Progressbar stimmt völlig mit dem überein, was auch in der Berechnung des Dateirests verwendet wird (beides 1155921).

Wie wäre dieser Timer deiner Meinung nach denn zu verwenden?
Ich denke, du meinst dann halt damit auch, dass beides zur gleichen Zeit aktualisiert wird?
Ist es denn sicher, dass dadurch solche 'Missverständnisse' verhindert werden können?

OregonGhost 25. Feb 2008 10:44

Re: Progressbar zu langsam??
 
Das Problem tritt nicht zufällig nur unter Vista auf?

defede 25. Feb 2008 10:47

Re: Progressbar zu langsam??
 
Hallo,
ich hatte das problem auch mal.

Gelöst habe ich das so:

self.Gauge_Main.Progress := AWorkCount * 100 div IdHTTP_Main.Response.ContentStream.Size;

damit richtest dich Quasi an der FileSize aus.

:zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 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