今日计划

本文记录了HTTP文件下载工具的开发过程。先实现支持端点续传功能,学习DUnit使用、多工程及Delphi类的使用。后将下载功能独立到新线程,解决界面僵死问题,还增加下载按钮状态切换等功能,最后修复重复下载的bug。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Milestone Target:制作一个支持端点续传的HTTP协议的文件下载工具。——DONE

memo:早上起来再说吧……
memo:通过设置Request.ContentRangeStart可以从中段开始下载了

1、学习DUnit的使用——OK
memo:学会了简单的使用
memo:弄了一个DUnitWizard
memo:DUnit要新开一个工程来做测试,做Embeded测试不是很方便。所以还要学习工程间的Unit互相引用
memo:放弃DUnitWizard
result:使用手工创建新的测试项目,学会了基本的使用。
memo:放弃的原因是那个can not find resource file……后来发现原来是一个known bug,这么严重的bug
memo:看来还是要忍受一下这个bug,毕竟自动生成要省事许多。

2、多工程的使用,和对Delphi的类的使用的熟悉——OK
memo:由学习DUnit而来
memo:创建两个工程,一个为工作工程,一个是测试工程。工作工程的内容是一个做简单加法的类,提供public的接口。测试工程就加法类的接口进行测试。
result:创建Delphi的类没什么难的。工程之间的Unit互相引用只需要给单元名就可以了。

3、把昨天的简单下载工具完善——OK
memo:增加了本地位置选择的对话框
memo:增加了断点续传功能,根据本地已下载文件的大小来确定中断位置
result:http://files.cnblogs.com/taowen/SimpleHTTPDonwloader2.rar

Milestone Target:把下载工具的下载功能独立到新的线程之中,防止界面的僵死——DONE

1、学会开一个新线程——OK
2、学习Delphi的命名规则——OK
3、开了新线程来下载,但是界面还是僵死,解决ing——OK
memo:怀疑是因为IdHTTP是在主线程创建的,而不是在副线程创建导致了问题
memo:发现导致创建了新线程还是让主线程等待的原因是使用了:Synchronize。正在学习Synchronize的作用……
result:由于把IdHTTP变成副线程中创建,所以不再需要调用Synchronize来访问Get方法,从而不再需要主线程的等待了。
4、增加对下载按钮Enable属性的切换——OK
5、把Downloading状态用属性来记录,使得写方法能自动调用Refresh——OK
6、代码重构——OK
7、用procedure指针代替了副线程直接操作主线程——OK
8、发现一个bug:因为是用是否已经存在本地文件来判断是否采用续传,当本地文件已经完全下载了之后,再次下载会因为已经存在本地文件导致重复下载附着到原文件之后。——OK
memo:原因是因为设置ContentRangeStart为ContentLength之后,下载不是零字节,而是完全重新下载。所以这种判定需要自己来做。
memo:在文件存在的时候,判定尺寸是小于,等于还是大于远程文件。
result:http://files.cnblogs.com/taowen/SimpleHTTPDownloader3.rar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值