請問怎樣計算IdFTP上傳速度? |
|
supperment
一般會員 發表:14 回覆:2 積分:3 註冊:2007-02-06 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
jaya
初階會員 發表:9 回覆:70 積分:30 註冊:2002-05-22 發送簡訊給我 |
附上我目前的程式碼,雖然不能直接使用,希望能夠有所幫助!(不需要的地方請自行刪除)
<textarea class="delphi" rows="10" cols="60" name="code"> procedure Tmainfrm.IdFTPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); Var S, st: 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); st := app04 FloatToStr(round((TotalByte / 1024 /1024)*100)/100) 'MB '; case AWorkMode of wmRead: begin stBar.Panels[1].Text := st app05 S; if TotalByte > 0 then stBar.Panels[0].Text := FloatToStr(round((AWorkCount / TotalByte)*100)) '%'; end; wmWrite: stBar.Panels[1].Text := app06 S; end; if AbortTransfer then IdFTP.Abort; ProgressBar1.Position := AWorkCount; AbortTransfer := false; end; procedure Tmainfrm.IdFTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin TransferrignData := true; AbortTransfer := false; STime := Now; if AWorkCountMax > 0 then ProgressBar1.Max := AWorkCountMax else ProgressBar1.Max := BytesToTransfer; AverageSpeed := 0; TotalByte := ProgressBar1.Max; end; procedure Tmainfrm.IdFTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin stBar.Panels[1].Text := app07; stBar.Panels[0].Text := ''; BytesToTransfer := 0; TransferrignData := false; ProgressBar1.Position := 0; AverageSpeed := 0; end; </textarea> ===================引 用 文 章=================== TIdFtp 的 OnWorkBegin Event 中開始計算 TIdFtp 的 OnWork Event 中的 AWorkCount 參數為傳輸的 byte 數 TIdFtp 的 OnWorkEnd Event 中結束計算 |
supperment
一般會員 發表:14 回覆:2 積分:3 註冊:2007-02-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |