请教用TIdFTP上传或下载文件时,如何用进度条显示上传或下载的进度???

endless 2005-12-29 08:44:58
我做过相关试验,TIdFTP上传文件时,无法促发OnWork事件,请高手指教!!!
...全文
640 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2005-12-30
  • 打赏
  • 举报
回复
在OnStatus事件里也可以处理。
shally5 2005-12-30
  • 打赏
  • 举报
回复
double AverageSpeed;
int FileLenCurrentCount;

void __fastcall TForm1::IdFTP1Work(TObject *Sender, TWorkMode AWorkMode,
const int AWorkCount)
{
AnsiString s;
TDateTime TotalTime;
WORD H, M, Sec, MS;
double DLTime;

TotalTime = Now() - STime;
DecodeTime(TotalTime, H, M, Sec, MS);
Sec = Sec + M * 60 + H * 3600;
DLTime = Sec + MS / 1000;
FileLenCurrentCount=AWorkCount/1024;
if (DLTime > 0)
AverageSpeed = (AverageSpeed + (AWorkCount / 1024) / DLTime) / 2;

s = FormatFloat("0.00 KB/s", AverageSpeed);

switch (AWorkMode)
{ case wmRead:
{ Label2->Caption = "下载速度 " + s;
if(FileLenCurrentCount>0)
Label3->Caption ="下载 "+IntToStr(FileLenCurrentCount)+" KB 总计 "+IntToStr(FileLenCount)+" KB";
break;
}
case wmWrite:
{
Label2->Caption = "上传速度 " + s;
if(FileLenCurrentCount>0)
Label3->Caption="上传 "+IntToStr(FileLenCurrentCount)+" KB 总计 "+IntToStr(FileLenCount)+" KB";
}
};

if (AbortTransfer)
IdFTP1->Abort();

ProgressBar1->Position = AWorkCount;
AbortTransfer = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdFTP1WorkBegin(TObject *Sender,
TWorkMode AWorkMode, const int AWorkCountMax)
{
STime = Now();
if (AWorkCountMax > 0)
{
ProgressBar1->Max = AWorkCountMax;

}
else
{
ProgressBar1->Max = BytesToTransfer;
}
AverageSpeed = 0;
FileLenCount=AWorkCountMax/1024;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdFTP1WorkEnd(TObject *Sender, TWorkMode AWorkMode)
{
BytesToTransfer = 0;
ProgressBar1->Position = 0;
AverageSpeed = 0;
FileLenCount=0;
FileLenCurrentCount=0;

}
constantine 2005-12-30
  • 打赏
  • 举报
回复
const AWorkCount: Integer);
const AWorkCountMax: Integer);

看看这两个 参数,在onwork,onworkbegin里面
不会触发?你可以上传吗?应该代码有问题吧,read,write应该都会触发的
endless 2005-12-30
  • 打赏
  • 举报
回复
怎么每人回答????
sfengnet 2005-12-30
  • 打赏
  • 举报
回复
恭喜楼主解决问题,


接分!!
endless 2005-12-30
  • 打赏
  • 举报
回复
我已经搞定了,谢谢大家

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧