使用idhttp.get()属性下载文件,如何知道下载了多少数据,或者说怎样写相应的进度条吧

解决方案 »

  1.   

    Delphi 7上有专门的进度条吧,在书上找找。
      

  2.   

    你可以用URLDownloadToFile函数 就可以显示呀 而且方便
      

  3.   

    liunini,能给个演示吗?代码举下例啊。我找不到这个函数啊。
      

  4.   

    新建一个工程文件,在Form1加上一个TIDHttp控件,两个Edit:Edit1是要下载的文件的网址;Edit2是要保存的文件路径名; 再加上ProgressBar1,和一个Button1
    下面是Delphi7的例子。//---------------------------------------------------------
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls, IdBaseComponent, IdComponent,
      IdTCPConnection, IdTCPClient, IdHTTP;type
      TForm1 = class(TForm)
        IdHTTP1: TIdHTTP;
        Button1: TButton;
        Edit1: TEdit;
        ProgressBar1: TProgressBar;
        Edit2: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        StatusBar1: TStatusBar;
        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);
        procedure IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
          const AStatusText: String);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var ss:TMemoryStream;
    begin
      ss:=TMemoryStream.Create;
      button1.Enabled:=false;
      try
       IDHttp1.Get(Edit1.Text,ss);//下载到ss中
       ss.SaveToFile(Edit2.Text);//将下载的文件保存到硬盘
      finally
       ss.Free;
       button1.Enabled:=true;
      end;
    end;procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    begin
       ProgressBar1.Max:=AWorkCountMax;
    end;procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    begin
      ShowMessage('下载完毕!');
    end;procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    begin
      ProgressBar1.Position:= AWorkCount;
    end;procedure TForm1.IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
    begin
      StatusBar1.SimpleText:= '状态:'+AStatusText;
    end;end.