Programowanie w języku Delphi » FAQ

Prędkość pobierania w HTTPGet

W tym punkcie FAQ opiszę w jaki sposób zmierzyć prędkość pobierania za pomocą komponentu HTTPGet.
Żeby główna procedura działała, musisz najpierw się przygotować. Na formie musi znajdować się HTTPGet oczywiście oraz ProgressBar zmieniany przez zdarzenie HTTPGet OnProgress w następujący sposób:

ProgressBar1.Max := TotalSize;
ProgressBar1.Position := Readed;
Timer1.Enabled := True;

Musisz jeszcze do zmiennych w projekcie dodać następujące zmienne:
var
  //[...]
  LastCheck, ValueKBSec, PPos: Integer;
 
implementation


Teraz zajmiemy się samym wyliczaniem prędkości. Wstaw na formę Timer, ustaw mu interval 1000, wyłącz i na zdarzenie OnTimer wywołaj kod:
PPos := ProgressBar1.Position;
ValueKBSec := ProgressBar1.Position - LastCheck;
ProgressBar1.Position := PPos;
ValueKBSec := ValueKBSec div 1024;
LastCheck := ProgressBar1.Position;
//No i mamy zapisaną ilość kB na sekundę w zmiennej ValueKBSec.

Teraz trzeba tylko wyłączyć Timer w określonych sytuacjach. Do HTTPGet OnDoneFile i OnError dodaj:
Timer1.Enabled := False;

8 komentarzy

roodeo 2009-11-11 19:56

jak wyświetlić zmienna ValueKBSec w ShowMessage / Prosze ;(

Demonical Monk 2008-07-26 19:02

A na co komu jest potrzebne ile tysięcznych kilobajta mu się ściąga na sekundę?

Potwoor_ 2008-07-15 09:45

eee, jak trzeba jeszcze to zdobywać to mi się nie chcę, zostanę przy Indym =]

Potwoor_ 2008-07-14 14:38

rzecz w sumie prosta ale nuuuuddnaaa, a tablicy nie trzeba, można by zrobić wątek którego się nigdzie nie przypisuje, argumentami jego Create będzie co i jak ma pobrać, a on sam będzie ściągać i wywoływać procedurę która updatnie pasek podstępu  dwie od zwiększania i zmniejszania licznika ( żeby wiedziało ile pobieranych jest )

a gdzie w ogóle ( w jakiej grupie ) jest HTTPGet, bo ja takie rzeczy robiłem przy użyciu TIdHTTPClient.Get() =]

Demonical Monk 2008-07-14 07:37

To już osobny punkt będzie. Można zrobić tablicę HTTPGetów :)

Potwoor_ 2008-07-14 02:40

zrób żeby radziło sobie z pobieraniem paru naraz to cię pochwalę =]

arek_w12 2008-07-20 13:53

gdyby zmienna ValueKBSec miała typ extended, dodać jeszcze stringa, użyć FormatFloat to prędkośc była by wyświetlana dokładniej (jeszcze operator "div" zmienic na "/")