^知道了可以用nmhttp控件下载网页,可是D7找不到这个控件了。 ^找到了idhttp控件似乎可以实现相同的功能,可是线上关于其的讨论太少 ^摘录一点代码:
直接采用Delphi自带的控件的INDY组件为例.新建一个工程,放上一个TIdHTTP控件,一个TIdAntiFreeze控件,一个TProgressBar用于显示下载进度.最后放上一个TButton用于开始执行我们的命令.代码如下:
procedure TForm1.Button1Click(Sender: TObject);//点击按钮的时候开始下载我们的文件 var MyStream:TMemoryStream; begin IdAntiFreeze1.OnlyWhenIdle:=False;//设置使程序有反应. MyStream:=TMemoryStream.Create; try IdHTTP1.Get(''''http://www.138soft.com/download/Mp3ToExe.zip'''',MyStream);//下载我站点的一个ZIP文件 except//INDY控件一般要使用这种try..except结构. Showmessage(''''网络出错!''''); MyStream.Free; Exit; end; MyStream.SaveToFile(''''c:\Mp3ToExe.zip''''); MyStream.Free; Showmessage(''''OK''''); end;
procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer);//开始下载前,将ProgressBar1的最大值设置为需要接收的数据大小. begin ProgressBar1.Max:=AWorkCountMax; ProgressBar1.Min:=0; ProgressBar1.Position:=0; end;
procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);//接收数据的时候,进度将在ProgressBar1显示出来. begin ProgressBar1.Position:=ProgressBar1.Position+AWorkCount; end;
IdHTTP1的Get还有一种形式就是获取字符串:例如,上面的程序可以改写成:
procedure TForm1.Button1Click(Sender: TObject); var MyStr:String; begin IdAntiFreeze1.OnlyWhenIdle:=False;//设置使程序有反应. try MyStr:=IdHTTP1.Get(''''http://www.138soft.com/default.htm''''); except Showmessage(''''网络出错!''''); Exit; end; Showmessage(MyStr); end;
|