社区
C++ Builder
帖子详情
用TIdFTP下载一个比较大的文件时候,如何让使用者知道程序没有死机?
fangrk
2003-09-24 04:00:07
我觉得可以采用下列方法,比如显示下载进度,或者当前下载速率,或者当前已经使用了多少时间。不过不知道怎么做。恳请各位帮忙。
...全文
63
7
打赏
收藏
用TIdFTP下载一个比较大的文件时候,如何让使用者知道程序没有死机?
我觉得可以采用下列方法,比如显示下载进度,或者当前下载速率,或者当前已经使用了多少时间。不过不知道怎么做。恳请各位帮忙。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shally5
2003-09-25
打赏
举报
回复
定义全局变量
TDateTime STime;
int AverageSpeed;
long BytesToTransfer ;
int FileLenCount;
int FileLenCurrentCount;
bool AbortTransfer;
在发送时记录起始时间
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)
{
StatusBar1->Panels->Items[2]->Text = "Transfer complete.";
BytesToTransfer = 0;
ProgressBar1->Position = 0;
AverageSpeed = 0;
FileLenCount=0;
FileLenCurrentCount=0;
StatusBar1->Panels->Items[3]->Text="";
}
//发送时的平均速度或/接收时平均速度
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:
{ StatusBar1->Panels->Items[2]->Text = "Download speed " + s;
if(FileLenCurrentCount>0)
StatusBar1->Panels->Items[3]->Text="下载 "+IntToStr(FileLenCurrentCount)+" KB 总计 "+IntToStr(FileLenCount)+" KB";
break;
}
case wmWrite:
{
StatusBar1->Panels->Items[2]->Text = "Upload speed " + s;
if(FileLenCurrentCount>0)
StatusBar1->Panels->Items[3]->Text="上传 "+IntToStr(FileLenCurrentCount)+" KB 总计 "+IntToStr(FileLenCount)+" KB";
}
};
if (AbortTransfer)
IdFTP1->Abort();
ProgressBar1->Position = AWorkCount;
AbortTransfer = false;
}
shally5
2003-09-25
打赏
举报
回复
在使用idFTP时,只作进度条显示上下载进度是不行的,它动不了的。
还要加入IdAntiFreeze控件,才能行。。。。。。
fathappy
2003-09-25
打赏
举报
回复
同意,用进度条
fangrk
2003-09-25
打赏
举报
回复
好,先给分,明天拷贝去试
fangrk
2003-09-25
打赏
举报
回复
好,先给分,明天拷贝去试
meCAD
2003-09-24
打赏
举报
回复
做个进度条不就行了.
Santos
2003-09-24
打赏
举报
回复
能获得当前已经收到的字节数,下面的运算自己做吧:)
用
TId
FTP
实现
文件
上传
只写了
一个
上传,是因为
一个
朋友只要上传功能,
下载
就
没有
写,把源码贴出来供大家学习,当时着急没写几行注释,连错误处理也少得可怜,见谅.可以上传整个目录,单线程
Delphi基于
TId
FTP
的简单
文件
上传实例
Delphi实现基于
TId
FTP
的简单
文件
上传,源码
Delphi使用
TId
Ftp
控件实现
FTP
协议
Delphi使用
TId
Ftp
控件实现
FTP
协议
TId
FTP
测试
程序
一个
测试
TId
FTP
控件的小
程序
,包含了连接,在
FTP
服务器上新建
文件
夹,
文件
,删除
文件
夹,
文件
,以及获取
文件
目录。同时包含了
FTP
工具SERV-U 9.0
TId
FTP
实现
文件
上传1.rar_
TId
FTP
1_c
文件
转发_
ftp
_
tid
ftp
_
文件
上传
转发
ftp
程序
,供大家参考,如有错误,请指正
C++ Builder
13,870
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章