• 今日计划


    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:https://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:https://files.cnblogs.com/taowen/SimpleHTTPDownloader3.rar

  • 相关阅读:
    phalcon之视图缓存
    Java NIO框架Netty教程(一) – Hello Netty
    setsockopt的作用
    支持向量机通俗导论(理解SVM的三层境地)
    quartz中的corn表达式(转)
    Applet 数字签名技术全然攻略
    SJTU 3001. 二哥的幸运
    OGRE之跳出漫长的编译等待
    VB.NET 数组的定义 动态使用 多维数组
    【Python】用Python的“结巴”模块进行分词
  • 原文地址:https://www.cnblogs.com/taowen/p/28472.html
Copyright © 2020-2023  润新知