Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/upl. (https://www.delphipraxis.net/11175-idftp-durchschnitts-geschwindigkeit-ermitteln-bei-dl-upl.html)

Freecer 1. Nov 2003 13:36


IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/upl.
 
HallO!

Alsp habe jetzt an nem proggy geschrieben das mir in nem memo die durchschnittsgeschwindigkeit von einem upload/download ausgibt.....

OK habe zwar ein tutorial gefundne zum IDFTP aber das funzt bei mir nicht wer es sehn will --->

http://www.tutorials.delphi-source.d.../file004.shtml -> die 2 untesten einträge!

oder war nur ich zu dumm dazu? oder stimmt dort etwas nicht???

Hoffe mir kann da jemand helfen! :roll:

mfg.

[edit=Daniel B]Titel korrigiert. Mfg, Daniel B[/edit]

Kamil 1. Nov 2003 16:03

Re: IdFTP durchschnittsgeschwindigkeit ermitteln?? Bei dl/up
 
Was geht denn nicht? Wo ist das Problem?

Freecer 1. Nov 2003 16:06

Re: IdFTP durchschnittsgeschwindigkeit ermitteln?? Bei dl/up
 
Zitat:

Zitat von Kamil
Was geht denn nicht? Wo ist das Problem?

Ja habe was vergessen jetzt läuft es aber er zeigt e smir nciht an da das progg beim uploaden einfriert!! Werde mal sehn ob ich bei google was finde!!! THX!

OK habe nichts gefunden hab mal das IDAntiFreeze reingeworfen aber noch immer ncihts besser :(
mfg.

scp 1. Nov 2003 16:25

Re: IdFTP durchschnittsgeschwindigkeit ermitteln?? Bei dl/up
 
IdAntiFreeze ist schonmal gut. Da muss dann Active auf true und OnlyWhenIdle auf false sein.
Nach dem ändern der Caption solltest du noch
Delphi-Quellcode:
Application.ProcessMessages;
einfügen
Dann gehts.

Freecer 1. Nov 2003 16:43

Re: IdFTP durchschnittsgeschwindigkeit ermitteln?? Bei dl/up
 
Hmm..........hat nicht wirklich viel gebracht aber anscheinend dürfte doch etwas nicht stimmen bei mir mit der status anzeige/dem durchnittschupload speed....

Habe jetzt ein file mit 1 kb hoch geladen und es ist nichts passiert..... :(

Kann mir jemand nen tip oder nen teil des quellcodes geben um NUR die durchschnittsgeschwindigkeit zu bekommen? were cht toll! DANKE!

mfg.

Kamil 1. Nov 2003 16:48

Re: IdFTP durchschnittsgeschwindigkeit ermitteln?? Bei dl/up
 
1 Kb ist ja auch normalerweise in weniger als einer Sekunde hochgeladen. Versuchs mal mit 1 MB.
Das Ereignis muss mindestens zwei mal aufgerufen werden, damit es irgendwas anzeigt.

Freecer 1. Nov 2003 16:52

Re: IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/
 
Auch getestet die besagte StatusBar1 bleibt wie wenn nichts passiert :(

p0w3r5tr34m3r 3. Nov 2003 12:08

Re: IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/
 
ich habe genau das selbe tutorial durchgearbeitet um mich mit den Indy Compos ein bisschen vertrauter zu machen, und ich habe das selbe problem... ich werde das jetzt auch nochmal mit "Application.ProgressMessages" versuchen und wenn das nicht klappt,
werde ich meinen Post editieren

MfG Power

[edit=Powerstreamer]
nö klappt nich
[/edit]

scp 4. Nov 2003 00:24

Re: IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/
 
Bei Statusbars hilft evtl. auch:
Delphi-Quellcode:
Statusbar1.Panels.Add;

StatusBar1.Panels[0].Text := 'blabla'; // statt StatusBar1.SimpleText

Freecer 4. Nov 2003 16:03

Re: IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/
 
Er sagt mir auch immer beim compilen das hier ich denke darum geht es nicht....

Delphi-Quellcode:
[Warning] pubunit1.pas(85): Variable 'AverageSpeed' might not have been initialized
[Warning] pubunit1.pas(79): Variable 'STime' might not have been initialized
kann mir da jemand sagen was da falsch ist...?

scp 5. Nov 2003 10:15

Re: IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/
 
Mal eine kleine Zwischenfrage: Welche Version von Indy benutzt du? Die, die bei Delphi dabei ist, oder eine aktuelle Indy 9 von http://www.indyproject.org/?

Hast du ein neues Projekt erstellt oder hast du das Indy FTP Demo geöffnet und nach dem Tutorial geändert?

Freecer 5. Nov 2003 15:34

Re: IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/
 
benutze eines von der indy homepage das 9er....

In ein eigenes projekt eingebaut.....

mfg.

kann ja mal den quellcode hier posten....

Delphi-Quellcode:
unit pubunit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Mask, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP, IniFiles, ComCtrls, IdAntiFreezeBase, IdAntiFreeze;

type
  TForm1 = class(TForm)
    IP: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    PathEdit: TEdit;
    Label3: TLabel;
    UserID: TEdit;
    Label4: TLabel;
    PasswordEdit: TEdit;
    Label5: TLabel;
    Button1: TButton;
    IdFTP1: TIdFTP;
    Memo1: TMemo;
    Edit1: TEdit;
    ProgressBar1: TProgressBar;
    StatusBar1: TStatusBar;
    IdAntiFreeze1: TIdAntiFreeze;
    procedure Button1Click(Sender: TObject);
    procedure IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
  private
    { Private declarations }
  public
 
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
IdFTP1.Username := UserID.Text;
  IdFTP1.Password := PasswordEdit.Text;
  IdFTP1.Host := IP.Text;
  IdFTP1.Connect;
  IdFTP1.ChangeDir(PathEdit.Text);
  IdFTP1.Put(Edit1.Text,
  ExtractFileName(Edit1.Text));
  end;

procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
ProgressBar1.Max := AWorkCountMax;
  ProgressBar1.Position := 0;

end;



procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);

  Var
  S: String;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
  STime: TDateTime;
  AverageSpeed: 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: StatusBar1.Panels[0].Text := 'Download speed ' + S;
    wmWrite: StatusBar1.Panels[0].Text := 'Uploade speed ' + S;
  end;

  //Aktualisieren der Fortschrittsanzeige:
  ProgressBar1.Position := AWorkCount;
end;

end.
Is der ganze quell code sinn von dem prog ist es einen vom user eingegebene ftp adresse zu connecten ein 1mb file up zu loaden und danach die geschwindigkeit zurück zu geben (in einem memo feld)!

-Volle- 19. Dez 2003 10:53

Re: IdFTP Durchschnitts- geschwindigkeit ermitteln?? Bei dl/
 
Also:
ich hatte genau das gleiche Problem... bei mir ist auch immer die Anzeige eingefroren...
Mit TIDAntifreeze geht das Einfrieren weg...
wenn die progressbar den status anzeigen soll, dann musste ich das so loesen:
AWorkcountmax wurde bei mir immer mit dem Wert 0 uebergeben... wenn man aber die Dateigroesse der Datei auf dem FTP Server ausliest
Delphi-Quellcode:
 idftp1.size('blub.txt')
und mit diesem Wert rechnet dann funktioniert die Anzeige OHNE Probleme...

naja, kommt n bissl spaet, habs eben erst grad gesehn....


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