社区
C++ Builder
帖子详情
用TIdFTP下载一个比较大的文件时候,如何让使用者知道程序没有死机?
fangrk
2003-09-24 04:00:07
我觉得可以采用下列方法,比如显示下载进度,或者当前下载速率,或者当前已经使用了多少时间。不过不知道怎么做。恳请各位帮忙。
...全文
66
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
打赏
举报
回复
能获得当前已经收到的字节数,下面的运算自己做吧:)
Delphi基于
TId
FTP
的简单
文件
上传实例
TId
FTP
是
一个
客户端
FTP
(
文件
传输协议)组件,允许开发者连接到
FTP
服务器,执行各种
FTP
命令,如登录、改变目录、列出目录内容以及上传和
下载
文件
。它封装了
FTP
协议的复杂性,使得在Delphi应用
程序
中实现
文件
传输变得...
用
TId
FTP
实现
文件
上传
【标题】"用
TId
FTP
实现
文件
上传"指的是在编程中使用
TId
FTP
组件来实现在
FTP
(File Transfer Protocol)服务器上上传
文件
的功能。
TId
FTP
是 Indy(Internet Direct)库的一部分,它是
一个
广泛用于Delphi和C++Builder等...
Delphi使用
TId
Ftp
控件实现
FTP
协议
首先,它可以高效稳定地完成大
文件
的上传和
下载
。其次,它可以完美地实现续传功能,避免了传输过程中的中断。最后,它可以提供丰富的事件响应机制来控制传输过程,提高了
程序
的可读性和可维护性。 在使用
TId
Ftp
...
TId
FTP
测试
程序
通过这个测试
程序
,开发者或
使用者
可以更好地理解
TId
FTP
组件的工作原理,学习如何在自己的应用
程序
中集成
FTP
功能,实现
文件
的上传、
下载
、管理等任务。
TId
FTP
组件的强大之处在于其灵活性和稳定性,它支持主动和被动...
TId
FTP
实现
文件
上传1.rar_
TId
FTP
1_c
文件
转发_
ftp
_
tid
ftp
_
文件
上传
5. "用
TId
FTP
实现
文件
上传":这是可能的核心内容,可能是
一个
包含具体代码示例的文本
文件
,解释了如何使用
TId
FTP
组件来上传
文件
。
TId
FTP
的使用通常涉及以下步骤: 1. **初始化组件**:在 Delphi 或 C++Builder...
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章