function TFrAutoUpdate.DownLoadFile(sURL, sFName: string): boolean;
var
tStream: TMemoryStream;
begin
Result := False;
tStream := TMemoryStream.Create;
try { 防止不可预料错误发生 }
sURL := IdHTTP1.URL.URLEncode(sURL); { 下载路径进行编码转换 }
try
IdHTTP1.Get(sURL, tStream); { 保存到内存流 }
tStream.SaveToFile(sFName); { 保存为文件 }
Result := True;
except
end;
finally { 即使发生不可预料的错误也可以释放资源 }
tStream.Free;
end;
end;
处理3个事件
OnWorkBegin AWorkCountMax则为下载的总字节数
OnWork AWorkCount则为已下载的字节数
OnWorkEnd 下载结束
进度条最大值设置为100,在OnWorkBegin中记录总字节数,在OnWork中用 AWorkCount/总字节数*100取整后设置给进度条。
procedure TUpdatefrm.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
ProgressBar1.Position := ProgressBar1.Max;
end;
procedure TUpdatefrm.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
ProgressBar1.Position := AWorkCount;
end;
procedure TUpdatefrm.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
ProgressBar1.Max := AWorkCountMax;
ProgressBar1.Min := 0;
ProgressBar1.Position := 0;
end;