精易论坛

标题: [类_FTP] 进度下载中回调参数进度有BUG [打印本页]

作者: 钥匙key    时间: 2024-4-8 22:49
标题: [类_FTP] 进度下载中回调参数进度有BUG
  
子程序名返回值类型公开备 注
进度下载逻辑型 
参数名类 型参考可空数组备 注
网络文件文本型
本地文件文本型
下载回调子程序指针3个参数;1=已下载,长整数型指针。2=速度,整数型。3=百分比,整数型。
变量名类 型静态数组备 注
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)
' 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]为整数.数据精度丢失.
导致后续计算进度存在可能为负的情况

作者: coconut    时间: 2024-4-9 08:55
致敬大佬!小白坐等修复!
作者: 久付云    时间: 2024-4-17 19:38
致敬大佬!小白坐等修复!
作者: 灵灵熊    时间: 2024-9-24 23:29
本帖最后由 灵灵熊 于 2024-9-25 00:38 编辑

已下载回调好像也有BUG,下载字节不对

转换好了

作者: 110006600    时间: 2024-9-25 15:40
楼主,修复了分享一下,谢谢!
作者: yuzhong    时间: 2024-10-6 13:00
11111111111111111111
作者: 小书臣    时间: 2024-11-13 17:06
1111111111111111111111111




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4