用idhttp打开网页或下载文件时如何显示进度
2013-11-27 22:48
706 查看
在它的workbegin work事件中写代码
procedure TfrmDownLoad.IdHTTP1WorkBegin(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
ProgressBar1.Max := AWorkCountMax ;
end;
procedure TfrmDownLoad.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
ProgressBar1.Position := AWorkCount ;
end;
显示下载速度
idhttp有一个方法就是OnWork,有一个参数AWorkCount,就是当前下载的大小(K)
用一个全局变量记录时间
在onWorkBegin的时候取一下时间
然后在OnWorK里再取一下时间,做差得到下载用的时间,然后用下载的大小除以时间就是下载的速度
全局变量:lastc,lastt
procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
nsize.Caption := '已下载:'+floattostr(ByteToStr(AWorkCount))+'MB';
speeds.Caption := '下载速度:'+floattostr((AWorkCount-lastc)*3600*24/(lastt-now)))+'kb/s';
ProgressBar1.Position:=AWorkCount;
lastc:=AWorkCount; //用ProgressBar1.Position做lastc也可以
lastt:=now;
end;
procedure TfrmDownLoad.IdHTTP1WorkBegin(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
ProgressBar1.Max := AWorkCountMax ;
end;
procedure TfrmDownLoad.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
ProgressBar1.Position := AWorkCount ;
end;
显示下载速度
idhttp有一个方法就是OnWork,有一个参数AWorkCount,就是当前下载的大小(K)
用一个全局变量记录时间
在onWorkBegin的时候取一下时间
然后在OnWorK里再取一下时间,做差得到下载用的时间,然后用下载的大小除以时间就是下载的速度
全局变量:lastc,lastt
procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
nsize.Caption := '已下载:'+floattostr(ByteToStr(AWorkCount))+'MB';
speeds.Caption := '下载速度:'+floattostr((AWorkCount-lastc)*3600*24/(lastt-now)))+'kb/s';
ProgressBar1.Position:=AWorkCount;
lastc:=AWorkCount; //用ProgressBar1.Position做lastc也可以
lastt:=now;
end;
相关文章推荐
- HttpClient 测试url连通 取得content
- TCP、UDP的区别
- TCP/IP协议简单介绍
- 蛋疼的移动cmnet tcp长连接
- 【自由谈】城域网IPv6过渡技术——CGN部署方式
- HTTP详解
- Tcp C/S socket编程
- linux配置网络总结
- 对于System.Net.Http的学习(二)——使用 HttpClient 进行连接
- Phonegap学习点滴(2) -- 网络状态检测
- windows下TCP/IP常用网络故障诊断命令
- 如何解决:Asp.NET调试时提示:无法启动程序“http://localhost:6901/WebGridview.aspx”
- Java Socket 编程学习之 TCP
- Leader/Follower多线程网络模型介绍
- 【JavaSE学习笔记】- 网络编程
- [转]Linux tcpdump命令详解
- [DOS]DOS功能调用06H 执行控制台I/O_编程学习_百度空间 http://hi.baidu.com/asmfan/item/4278a2eb1935091965db009f
- VC++ UDP网络控制台程序
- python进阶6 HTTP协议客户端实现
- Http-Components教程 -- 连接管理