现在的下载软件一般都是多线程,多资源的下载模式,本文用ICS中的TMultipartHttpDownloader组件实现多线程,单资源的分块下载模式,鲁大师的升级就是这样的原理,可以参考.
先看组件的几个事件:
HTTPRequestDone(Sender: TObject; ErrorCode: Integer; const Reason: string);
下载完成事件,在这里可以释放下载的文件流
FMultiPartHTTP.FileStream.Free;
FMultiPartHTTP.FileStream := nil;
HTTPShowStats(Sender: TObject);
下载显示状态信息事件
'已下载(MB):' + Format('%2f',[FMultiPartHTTP.TotalCount / 1024 / 1024]) +
' 完成:' + Format('%3.0f', [FMultiPartHTTP.PercentDone])+'%' +
' 速度(KB/秒):' + Format('%6.2f', [FMultiPartHTTP.CurSpeed]) +
' 耗时:' + FormatDateTime('hh:nn:ss', FMultiPartHTTP.ElapsedTime);
下面2个事件和进度条有关,ICS自带了个下载进度条
HTTPProgressAddSegment(Sender: TObject; StartOffset, ASpan, InitPos: Int64);
ASpan分段大小,InitPos分段开始大小, StartOffset,分段开始大小
HTTPProgressSetPosition(Sender: TObject;Index: Integer; Position: Int64);
Index第几个分段 Position 分段已下载的大小
下面是用法,非常简单:
FMultiPartHTTP.URL:=下载文件地址;
FMultiPartHTTP.PartCount:=分块个数;
FMultiPartHTTP.FileStream:=TFileStream.Create('下载本地文件名',fmCreate);
FMultiPartHTTP.Start;
注意:PartCount要大于1,这个组件支持断网断点下载,如果要控制下载的线程数量需要改ICS的源代码
最后修改:2010 年 08 月 18 日
© 允许规范转载
相关文章
- 👉 【提问GPT】TADOConnection连接失败的问题
- 👉 CnPack 密码算法库 For Delphi
- 👉 [提问GPT]我想用delphi作为开发语言,做一个杀毒软件,有可能吗?
- 👉 Delphi 7: 面向对象设计和原型设计的优势分析
- 👉 暗黑破坏神4 原声音乐320K (共47首原声BGM) 下载
- 👉 delphi xe8 自带DEMO集合
- 👉 Delphi XE FireDAC 数据库编程学习1
- 👉 Delphi7在windows11下提示unable to rename.....错误
- 👉 Cef4动态设置代理IP方法
- 👉 将Delphi XE8 改为 Delphi7一样的浮动窗口设计