Up-/Downloadgeschwindigkeit ermitteln (TIdFTP) |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Die Indy Komponenten stehen zum Download unter www.indyproject.org.In diesem Beispiel wird die Übertragungsgeschwindigkeit der TIdFTP Komponente ermittelt und in KB/s in Label1 ausgegeben.
private
FTime: Longword;
FBytes: Longword;
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
FTime := GetTickCount;
FBytes := 0;
end;
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
if (GetTickCount - FTime) >= 1000 then
begin
label1.caption := Format('%.2f KB/s', [(AWorkCount - FBytes) / (GetTickCount - FTime)]);
FTime := GetTickCount;
FBytes := AWorkCount;
Application.ProcessMessages;
end;
end;
Das Beispiel lässt sich auch auf andere Indy-Komponenten übertragen, die auf ein OnWorkBegin-Ereignis, das aufgerufen wird, wenn eine Übertragung gestartet wird und ein OnWork-Ereignis, das nach der Bearbeitung eines Pakets ausgelöst wird, zurückgreifen. In der Indy-Library besitzen beispielsweise TIdTCPClient, TIdHTTP, TIdPOP3, TIdSMTP identische Ereignisse.Setzt man eine andere Internet-Komponente ein, die vergleichbare Ereignisse anbietet, lässt sich die o.g. Routine leicht anpassen.