代码如下:
Code
1uses URLMon, ShellApi
2function DownloadFile(SourceFile, DestFile: string): Boolean;
3begin
4 try
5 Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
6 except
7 Result := False;
8 end;
9end;
10procedure TForm1.BitBtn1Click(Sender: TObject);
11var
12 SourceFile: string;
13 DestFile: string;
14begin
15 SourceFile := 'http://dl.google.com/googletalk/googletalk-setup-zh-CN.exe';
16 DestFile := 'D:\软件升级\googletalk-setup-zh-CN.exe';
17 if DownloadFile(SourceFile, DestFile) then begin
18 ShowMessage(' Download succesful! ');
19 ShellExecute(Application.Handle, PChar('open'), PChar(DestFile), PChar(''), nil, SW_NORMAL)
20 end
21 else
22 ShowMessage(' Error while downloading ' + SourceFile)
23end;
24
25
26 IdHTTP1: TIdHTTP;
27 IdAntiFreeze1: TIdAntiFreeze;
28 ProgressBar1: TProgressBar;
29 BitBtn2: TBitBtn;
30
31procedure TForm1.BitBtn2Click(Sender: TObject);
32var
33 MyStream: TMemoryStream;
34begin
35 IdAntiFreeze1.OnlyWhenIdle := False; //设置使程序有反应.
36 MyStream := TMemoryStream.Create;
37 try
38 IdHTTP1.Get('http://dl.google.com/googletalk/googletalk-setup-zh-CN.exe', MyStream);
39 except
40 ShowMessage('没有下载成功!');
41 MyStream.Free;
42 Exit;
43 end;
44 MyStream.SaveToFile(ExtractFilePath(paramstr(0)) + 'HTTPDemo.zip');
45 MyStream.Free;
46 ShowMessage('OK');
47
48end;
49procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
50 const AWorkCountMax: Integer);
51begin
52 //开始下载前,将ProgressBar1的最大值设置为需要接收的数据大小.
53 ProgressBar1.Max := AWorkCountMax;
54 ProgressBar1.Min := 0;
55 ProgressBar1.Position := 0;
56end;
57
58procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
59 const AWorkCount: Integer);
60begin
61 //接收数据的时候,进度将在ProgressBar1显示出来.
62 ProgressBar1.Position := ProgressBar1.Position + AWorkCount;
63end;
1uses URLMon, ShellApi
2function DownloadFile(SourceFile, DestFile: string): Boolean;
3begin
4 try
5 Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
6 except
7 Result := False;
8 end;
9end;
10procedure TForm1.BitBtn1Click(Sender: TObject);
11var
12 SourceFile: string;
13 DestFile: string;
14begin
15 SourceFile := 'http://dl.google.com/googletalk/googletalk-setup-zh-CN.exe';
16 DestFile := 'D:\软件升级\googletalk-setup-zh-CN.exe';
17 if DownloadFile(SourceFile, DestFile) then begin
18 ShowMessage(' Download succesful! ');
19 ShellExecute(Application.Handle, PChar('open'), PChar(DestFile), PChar(''), nil, SW_NORMAL)
20 end
21 else
22 ShowMessage(' Error while downloading ' + SourceFile)
23end;
24
25
26 IdHTTP1: TIdHTTP;
27 IdAntiFreeze1: TIdAntiFreeze;
28 ProgressBar1: TProgressBar;
29 BitBtn2: TBitBtn;
30
31procedure TForm1.BitBtn2Click(Sender: TObject);
32var
33 MyStream: TMemoryStream;
34begin
35 IdAntiFreeze1.OnlyWhenIdle := False; //设置使程序有反应.
36 MyStream := TMemoryStream.Create;
37 try
38 IdHTTP1.Get('http://dl.google.com/googletalk/googletalk-setup-zh-CN.exe', MyStream);
39 except
40 ShowMessage('没有下载成功!');
41 MyStream.Free;
42 Exit;
43 end;
44 MyStream.SaveToFile(ExtractFilePath(paramstr(0)) + 'HTTPDemo.zip');
45 MyStream.Free;
46 ShowMessage('OK');
47
48end;
49procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
50 const AWorkCountMax: Integer);
51begin
52 //开始下载前,将ProgressBar1的最大值设置为需要接收的数据大小.
53 ProgressBar1.Max := AWorkCountMax;
54 ProgressBar1.Min := 0;
55 ProgressBar1.Position := 0;
56end;
57
58procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
59 const AWorkCount: Integer);
60begin
61 //接收数据的时候,进度将在ProgressBar1显示出来.
62 ProgressBar1.Position := ProgressBar1.Position + AWorkCount;
63end;