用IdHTTP控件来下载一个比较大的文件我怎么样来了解
下载的进度如何
我的基本的下载是这样处理的.......s:=Tstringstream.Create('');
form1.IdHTTP1.Get(ASourceDir,s);
f:=tfilestream.Create(SaveDir,fmCreate);
s.Seek(0,soFromBeginning);
f.CopyFrom(s,s.Size);
s.Free;
f.Free;
form1.Memo2.Lines.Add(ASourceDir+'下载成功');...........
hlep

解决方案 »

  1.   

    他有几个事件OnWork
    OnWorkBegin
    OnWorkEnd,你可以这三个事件里面完成下载的进度显示,具体的用法你可以参考IdFtp的Demo,他们用法是相同的。
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      IdHTTP, ComCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        ProgressBar1: TProgressBar;
        IdHTTP1: TIdHTTP;
        procedure Button1Click(Sender: TObject);
        procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
          const AWorkCountMax: Integer);
        procedure IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
        procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
          const AWorkCount: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      d:string;
    begin
      try
        d:=idhttp1.Get('http://www.sohu.com');
      except
        showmessage('c');
      end;
    end;procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    begin
      progressbar1.Position:=1;
      progressbar1.Max:=aworkcountmax;
    end;procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    begin
      progressbar1.Position:=progressbar1.Max;
    end;procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    begin
      progressbar1.Position:=aworkcount;
    end;end.