Prędkość wysyłania plików - Delphi

0

Pisze właśnie program, który wysyła pliki do innego. Musze tam wstawić prędkość wywyłania pliku...
Napisałem wiec cos takiego:

procedure TForm1.Timer1Timer(Sender: TObject);
var Speed , Position , Max:Integer;
begin
Position:=ProgressBar1.Position;
Speed:=(Position-Tag) div 1024;
Tag:=ProgressBar1.Position;

Label1.Caption:='Prędkość wysyłania pliku : '+IntToStr(speed)+' kb/s';

end;

A timer w którym to siedzi ustawiłem na 1 sec.
Chodzilo mi o to, zeby program sprawdzal ile bajtów wysłał w ciągu sec.

Wszystko działa, tylko że prędkość wacha się chwilami od 1024 kb/s do 119 kb/s, a tak być nie może {glowa} .

Jakiś pomysł ?

Pozdrawia Karol {browar}

The Delphi has you ...

0

Może weź większy interwał (np. 2 lub 3 s). Dzięki temu wyciągnie średnią i zniweluje błędy pomiaru.--Jest jeszcze jeden błąd ... :)

--------------Blok reklamowy :) -----
kanał: #4programmers.net lub #4programmers
w sieci POLNet
serwer np.: warszawa.ircnet.pl

0

Próbowałem {glowa} .------------------------------------------------------------
The Delphi has you ...

0

cimak napisał:
Próbowałem {glowa} .
&gt
A masz możliwość pobierania rozmiaru wysłanego fragmentu?
Bo ProgressBar działa na liczbach całkowitych, może zniekształcać.
Pobierz rozmiar wysłango pliku i odejmij od niego ostani znany rozmiar pliku.
Pobierz aktualny czas (z dokładnością do milisekund) i odejmij od tego czasu ostatnio pobrany czas.
Potem podziel rozmiar przez czas i powinno grać. Nie będzie miało wpływu z jaką częstotliowścią dokonujesz pomiarów.--Jest jeszcze jeden błąd ... :)

--------------Blok reklamowy :) -----
kanał: #4programmers.net lub #4programmers
w sieci POLNet
serwer np.: warszawa.ircnet.pl

0

A no właśnie.... Nad tym myślałem na samym początku, ale darowałem sobie, bo miałem problem:
jeśli jest godzina 14 : 37 : 44 :|
i odejme od niej 1 : 23 : 35 :|
To jak to policzyć w Delphi ? hmm...

Pozdrawia Karol {hello}

The Delphi has you ...

0

Ja gdzies kiedys znalazlem cos takiego: :-)

var
TimeA,TimeB: TDateTime;
begin
TimeA := StrToTime('1410');
TimeB := StrToTime('1520');
Edit1.Text := TimeToStr(TimeB-TimeA);
end;
--pozdrawiam PEDROS {hello}
PROPAGANDA: Uzywajcie irca i badzcie na kanale 4programmers.net
Delphi6

0

Pedros napisał:
Ja gdzies kiedys znalazlem cos takiego: :-)
&gt
&gtvar
&gtTimeA,TimeB: TDateTime;
&gtbegin
&gtTimeA := StrToTime('1410');
&gtTimeB := StrToTime('1520');
&gtEdit1.Text := TimeToStr(TimeB-TimeA);
&gtend;
&gt
&gt
To będą raczej jakieś małe wartości. Wygodniej użyć:
MilliSecondsBetween z DateUtils :)
&gtPROPAGANDA: Uzywajcie irca i badzcie na kanale 4programmers.net
&gtDelphi6--Jest jeszcze jeden błąd ... :)

--------------Blok reklamowy :) -----
kanał: #4programmers.net lub #4programmers
w sieci POLNet
serwer np.: warszawa.ircnet.pl

1 użytkowników online, w tym zalogowanych: 0, gości: 1