Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi speedanzeige funktioniert nicht richtig (https://www.delphipraxis.net/16728-speedanzeige-funktioniert-nicht-richtig.html)

Paul 22. Feb 2004 15:14


speedanzeige funktioniert nicht richtig
 
hi,

die INDY-speedanzeige funktioniert nicht richtig????

wird alles wunderbar angezeigt nur der speed wird etwas langsam angezeigt???
angezeigt wird 0.20kb/s aber mit 70kb/s läd er in wirklichkeit runter

Delphi-Quellcode:
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
Var
  S: String;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
begin
  //Errechnen der Transfergeschwindigkeit:
  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;
  S := FormatFloat('0.00 KB/s', AverageSpeed);
  case AWorkMode of
    wmRead: GroupBox3.Caption :=' DownloadSpeed - ' + S; // hier würd ich es gern in der ProgressBar1 anzeigen lassen
  end;

  //Aktualisieren der Fortschrittsanzeige:
  ProgressBar1.Position := AWorkCount;
end;
bin über jede hilfe dankbar

mfg

Markus K. 22. Feb 2004 15:32

Re: speedanzeige funktioniert nicht richtig
 
Hi Paul,
müsste bei der Downloadzeitberechnung die Addition(DLTime := Sec + MS / 1000;) der Sekunden und Millisekunden nicht in Klammern stehen :gruebel:? Oder weshalb teilst du nur die Millisekunden durch 1000?

Tschüß Markus

Paul 22. Feb 2004 16:47

Re: speedanzeige funktioniert nicht richtig
 
hi,

ich kann dir jetzt nicht ganz folgen was du meinst :?

mfg

Markus K. 22. Feb 2004 16:50

Re: speedanzeige funktioniert nicht richtig
 
Hi Paul,
ich meinte damit, dass Punkt vor Strichrechnung geht. Es werden erst die Millisekunden durch 1000 dividiert und danach erst mit den Sekunden addiert. Oder ist es beabsichtigt das sie Millisekunden zuerst durch 1000 geteilt werden? Wenn ja, warum?

Tschüß Markus

Matze 22. Feb 2004 16:51

Re: speedanzeige funktioniert nicht richtig
 
Er meint:

Delphi-Quellcode:
DLTime := (Sec + MS) / 1000;

Paul 22. Feb 2004 17:16

Re: speedanzeige funktioniert nicht richtig
 
besten dank.
der speed wird in angezeigt in einer steigernden form. wird nicht gleich komplett angezeigt sondern fängt bei null an und steigert sich. der wahre speed wird immer noch nicht angezeigt. :(

besten dank, das hilft mir schon mal weiter.

mfg paul

Markus K. 22. Feb 2004 17:57

Re: speedanzeige funktioniert nicht richtig
 
Sorry, aber ich habe mich geirrt :wall:
Es stehen deshalb keine Klammern, weil die Millisekunden erst noch in Sekunden umgerechnet werden müssen(die Umrechnung hätte man auch in einer Zeile vereinbaren können).
Meiner Ansicht nach scheint es entweder einen Fehler bei STime oder AWorkCount zugeben.
Welchem Wert hast du denn der TDateTime-Variablen zugewiesen? Es müsste doch eigentlich die Startzeit sein, oder? Hast du auch bei Start des Download/Uploads der Variablen die Startzeit zugewiesen? Denn wenn die Variable den Wert 0 hat, wird die Zeit zu groß, daraus folgt wiederum, dass der Speed zu klein angezeigt wird.
Das die Konstante AWorkCount falsch ist, halte ich für ausgeschlossen, da die Indy-Komponente den Wert übergibt.

Tschüß Markus

PS: Sorry nochmal für den Fehler(ich sollte erst richtig überlegen und dann schreiben :oops: ).

Paul 22. Feb 2004 20:33

Re: speedanzeige funktioniert nicht richtig
 
hi,

Zitat:

Welchem Wert hast du denn der TDateTime-Variablen zugewiesen?
ich habe TDateTime-Variablen keine wert gegeben.

Delphi-Quellcode:
private
    { Private declarations }
    STime:TDateTime;
  public
    { Public declarations }

  end;
mfg Paul

stoxx 22. Feb 2004 20:40

Re: speedanzeige funktioniert nicht richtig
 
Zitat:

Zitat von Paul
hi,

Zitat:

Welchem Wert hast du denn der TDateTime-Variablen zugewiesen?
ich habe TDateTime-Variablen keine wert gegeben.

Delphi-Quellcode:
private
    { Private declarations }
    STime:TDateTime;
  public
    { Public declarations }

  end;
mfg Paul

dann solltest Du schleunigst im Event onworkbegin stime := now setzen :-)

Paul 22. Feb 2004 23:29

Re: speedanzeige funktioniert nicht richtig
 
hi,

das hab ich gemacht jetzt hab ich ein speed von 6400kb/s :)

Delphi-Quellcode:
begin
  //Errechnen der Transfergeschwindigkeit:
  stime := now;
  TotalTime := Now - STime;
  DecodeTime(TotalTime, H, M, Sec, MS);
  Sec := Sec + M * 60 + H * 3600;
  DLTime := Sec + MS / 1000;
ich schau mal was ich machen kann :)

n8 all

mfg Paul

stoxx 23. Feb 2004 00:14

Re: speedanzeige funktioniert nicht richtig
 
Code:
begin
  //Errechnen der Transfergeschwindigkeit:
  stime := now;
  TotalTime := Now - STime;
  DecodeTime(TotalTime, H, M, Sec, MS);
  Sec := Sec + M * 60 + H * 3600;
  DLTime := Sec + MS / 1000;
so richtig scheinst Du nicht zu wissen, was Du da mit copy und paste eingefügt hast, was ? :mrgreen:
in Indy gibt es ein onworkBEGIN, .. das wo Du bist, ist onwork ! Du willst ja die Zeit DIFFERENZ haben. stime solltest Du in onwork in Ruhe lassen.
Alles klar ?

Markus K. 23. Feb 2004 13:33

Re: speedanzeige funktioniert nicht richtig
 
Hi Paul,
so sollte die Berechnung der Transfergeschwindigkeit richtig berechnet werden.

Delphi-Quellcode:
procedure TMainForm.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  sTime:=Now;
end;

procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
Var
  S: String;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
begin
  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;
  S := FormatFloat('0.00 KB/s', AverageSpeed);
  case AWorkMode of
    wmRead: Ausgabe;
  end;
  ProgressBar1.Position := AWorkCount;
end;
Tschüß Markus

Paul 23. Feb 2004 16:26

Re: speedanzeige funktioniert nicht richtig
 
hi,

danke erstmal :-D

wenn noch einer kurz zeit hat mir zu erklären warum in procedure TMainForm.IdFTP1WorkBegin der wert gesetzt werden muss, wäre ich sehr glücklich.

thx schon mal

mfg Paul

Markus K. 23. Feb 2004 16:28

Re: speedanzeige funktioniert nicht richtig
 
Na weil du ja die Startzeit brauchst, wann der Transfer begonnen hat. Das Ereignis onWorkBegin wird ausgelöst, sobald ein Transfer beginnt.
Wenn ich falsch liege bitte ich um Korrektur :wink:

Tschüß Markus

Paul 23. Feb 2004 22:54

Re: speedanzeige funktioniert nicht richtig
 
abend,

Delphi-Quellcode:
procedure TForm1.IdFTP1OnWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  sTime:=Now;
end;

zeigt mir immer noch nicht den richtigen speed an :(

was kann ich noch falsch gemacht haben

mfg


Delphi-Quellcode:
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
Var
  S: String;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
begin
  //Errechnen der Transfergeschwindigkeit:
  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;
  S := FormatFloat('0.00 KB/s', AverageSpeed);
  case AWorkMode of
    wmRead: GroupBox3.Caption :=' DownloadSpeed - ' + S; // hier würd ich es gern in der ProgressBar1 anzeigen lassen
  end;
    //Aktualisieren der Fortschrittsanzeige:
  ProgressBar1.Position := AWorkCount;
end;

procedure TForm1.IdFTP1OnWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  sTime:=Now;
end;

Delphi-Quellcode:
  private
    { Private declarations }
   STime:TDateTime;
  public
    { Public declarations }

  end;

var
  Form1: TForm1;
  MyIni : TIniFile;
  ListItem: TListItem;
  AverageSpeed:Double=0;

implementation

stoxx 23. Feb 2004 23:19

Re: speedanzeige funktioniert nicht richtig
 
Du musst bei der TIdFTP Komponente im Objectinspektor das onworkbegin Eregnis zuweisen ...

Paul 24. Feb 2004 16:48

Re: speedanzeige funktioniert nicht richtig
 
ah shit das hab ich noch vergessen :lol:

big thx


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