本帖最后由 wmzqcc 于 2010-01-12 22:45:30 编辑

解决方案 »

  1.   

    getspeed是什么?
    下载速度是总体的平均下载速度,还是本次事件里的下载速度?
    前者应该用已下载总字节数除以总的时间
    后者应该AWorkCount-上次的AWorkCount,除以当前时间-上次的时间
      

  2.   

    getspeed是转换字节的一个函数我是想要获取本次事件里的下载速度我是这样想的,AWorkCount是当前已下载的总字节,我先用AWorkCount-ProgressBar1.Position,从而获取本次下载字节数.然后再将AWorkCount的值赋给ProgressBar1.Position但是这样却无法计算出来
      

  3.   

    搞2个属性或全局变量:lastc,lastt
    procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
    begin
       nsize.Caption := '已下载:'+floattostr(ByteToStr(AWorkCount))+'MB';
       speeds.Caption := '下载速度:'+floattostr((AWorkCount-lastc)*3600*24/(lastt-now)))+'kb/s';
       ProgressBar1.Position:=AWorkCount;
       lastc:=AWorkCount; //用ProgressBar1.Position做lastc也可以
       lastt:=now;
    end;