|
|
进度下载 | 逻辑型 | | |
网络文件 | 文本型 | | | | 本地文件 | 文本型 | | | | 下载回调 | 子程序指针 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 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]为整数.数据精度丢失.
导致后续计算进度存在可能为负的情况
|
|