^知道了可以用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;