Delphi下载指定网址(URL)的文件,带进度条显示
主要使用的是Delphi自帶的TIdhttp控件。
一、界面設置
在窗體上放置兩個TEdit控件,一個用于輸入要下載的文件URL,一個用于輸入要保存到本地的文件路徑;放置兩個TLabel控件,一個顯示文件總大小,一個顯示當前已下載大小;放置一個按鈕TButton,一個TIdhttp控件(在Indy Clients面板)和一個TIdAntiFreeze控件(放置該控件可避免下載過程中程序無響應,在Indy Misc面板)。
二、主要代碼
//1. 字節數轉換為KB或MB字符串
function?BytesToStr(iBytes: Integer): String;
var
? iKb: Integer;
begin
? iKb := Round(iBytes / 1024);
? if iKb > 1000 then
??? Result := Format('%.2f MB', [iKb / 1024])
? else
??? Result := Format('%d KB', [iKb]);
end;
//2.? Idhttp1控件的OnWorkBegin事件代碼,用于獲取文件總大小
procedure?TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
? const AWorkCountMax: Integer);
begin
? ProgressBar1.Max := aWorkCountMax;
? Label2.Caption := BytesToStr(iWorkCountMax);
? Update;
end;
//3. Idhttp1控件的OnWork事件響應代碼,用于更新文件下載進度
procedure?TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
? const AWorkCount: Integer);
begin
? Label1.Caption := BytesToStr(aWorkCount);
? ProgressBar1.Position := aWorkCount;
? Update;
end;
//4. 按鈕Button1的點擊事件代碼
procedure?TForm1.Button1Click(Sender: TObject);
var?
? tStream: TMemoryStream;
begin
? tStream := TMemoryStream.Create;
??try
??? IdHTTP1.Get(Edit1.Text, tStream);?//保存到內存流
??? tStream.SaveToFile(Edit2.Text);?//保存為文件
????ShowMessage('下載成功!');
??except
??? ShowMessage('下載失敗!');
??end;
? tStream.Free;
??end;
以上代碼在Delphi7編譯環境下測試通過。
總結
以上是生活随笔為你收集整理的Delphi下载指定网址(URL)的文件,带进度条显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞鸽-http://www.freeei
- 下一篇: 拖动窗体的任意区域移动窗体