|

|
进度下载 | 逻辑型 | | |
网络文件 | 文本型 | | | | 本地文件 | 文本型 | | | | 下载回调 | 子程序指针 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | hOpen | | | | hOpenUrl | | | | bool | 逻辑型 | | | sReadBuffer | 字节型 | | 0 | lNumberOfBytesRead | | | | lCount | 长整数型 | | | hHttpQueryInfo | | | | sBuffer | 文本型 | | | FileSize | | | | handle | | | | StartTime | | | | TotalReadSize | | | | TimeConsuming | 整数型 | | | lSpeed | 整数型 | | | 进度 | | | |
FileSize = 文件取大小 (网络文件 ) 如果真 (FileSize = 0 ) 返回 (假)hOpenUrl = FtpOpenFileA (连接句柄, 网络文件, -2147483648, 2, 0) 如果真 (hOpenUrl = 0 ) 返回 (假)handle = 打开文件 (本地文件, 6, 1)StartTime = GetTickCount () 循环判断首 () 重定义数组 (sReadBuffer, 假, 2048 ) bool = InternetReadFile_Byte (hOpenUrl, sReadBuffer, 2048, lNumberOfBytesRead ) 如果 (lNumberOfBytesRead > 0 且 bool ) 重定义数组 (sReadBuffer, 真, lNumberOfBytesRead )   lCount = lCount + lNumberOfBytesRead  写出数据 (handle, sReadBuffer )  TotalReadSize = TotalReadSize + lNumberOfBytesRead   TimeConsuming = GetTickCount () - StartTime   如果真 (TimeConsuming > 0 )   lSpeed = TotalReadSize ÷ TimeConsuming  进度 = 取整 (lCount ÷ FileSize × 100)
  如果真 (是否为空 (下载回调 ) = 假 或 到整数 (下载回调 ) ≠ 0 )  程序_Call (到整数 (下载回调 ), 取指针地址_长整数型 (lCount ), lSpeed, 进度, , ) 处理事件 () 跳出循环 () 处理事件 () 循环判断尾 (lNumberOfBytesRead ≠ 0 )关闭文件 (handle )InternetCloseHandle (hOpen )InternetCloseHandle (hOpenUrl )返回 (真)
文件取大小 (网络文件) 返回参数为长整数.
接收参数[FileSize]为整数.数据精度丢失.
导致后续计算进度存在可能为负的情况
|
|