添加一个IdHTTP控件命名为IdHTTP1、一个进度条ProgressBar控件,命名为DownLoad_ProgressBar。
void __fastcall TTabbedForm::DownloadFile(AnsiString URL,AnsiString sFileName)
{
TMemoryStream *ms=new TMemoryStream();
bCanDownload = true;
try{
DownLoad_ProgressBar->Visible=true;
try{
Application->ProcessMessages();
IdHTTP1->Get(URL,ms);//注意,下载的只能是图片格式的扩展名如png/jpg...而不能是其它的。
ms->SaveToFile(sFileName);
}
catch(Exception &ee)//__except(...)
{
ToastLog(U"错误:"+ee.Message);//自定义函数。
bCanDownload =false;DownLoad_ProgressBar->Visible=false;
}
}
__finally{ //单个文件不能下载。
if(!bCanDownload)ToastLog(U"下载错误,请检查设置!");
else{
ToastLog(U"下载完成!");
//InstallAPK("/storage/emulated/0/057Lmq/App/signIn.apk");
}
delete ms;
}
}
//---------------------------------------------------------------------------
//显示下载进度
void __fastcall TTabbedForm::IdHTTP1Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)
{
Application->ProcessMessages();//注意,要处理消息,否则无法显示进度。
DownLoad_ProgressBar->Value= AWorkCount;
}
//---------------------------------------------------------------------------
void __fastcall TTabbedForm::IdHTTP1WorkBegin(TObject *ASender, TWorkMode AWorkMode,
__int64 AWorkCountMax)
{
DownLoad_ProgressBar->Max = AWorkCountMax;
}
//---------------------------------------------------------------------------
void __fastcall TTabbedForm::IdHTTP1WorkEnd(TObject *ASender, TWorkMode AWorkMode)
{
DownLoad_ProgressBar->Visible=false;
DownLoad_ProgressBar->Value=0;
DownLoad_ProgressBar->Max = 10;
}
//---------------------------------------------------------------------------