开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: rszhao
收起左侧

[已回应] 类_ftp 增加进度下载和进度上传

[复制链接]
结帖率:71% (35/49)
发表于 2016-5-23 19:06:43 | 显示全部楼层   湖北省黄冈市
用这个为什么会出现MD5变化
回复 支持 反对

使用道具 举报

发表于 2016-5-11 10:45:07 | 显示全部楼层   江苏省无锡市
来学习一下
回复 支持 反对

使用道具 举报

发表于 2016-4-24 11:43:11 | 显示全部楼层   湖南省长沙市
来学习一下
回复 支持 反对

使用道具 举报

结帖率:0% (0/11)
 楼主| 发表于 2016-4-16 19:33:10 | 显示全部楼层   四川省眉山市
萧阳天 发表于 2016-4-14 09:34
有必要反编译我模块嘛

我没看作者信息哦.群里找了个,反编译下来看了下,要是有对不住的地方,就给你道歉了

话说回来,是你的为什么又不加上呢?
我也免得去反编译啊
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)
发表于 2016-4-14 09:34:39 | 显示全部楼层   广东省深圳市
有必要反编译我模块嘛
  1. .版本 2

  2. .子程序 进度下载, 逻辑型, 公开
  3. .参数 网络文件, 文本型
  4. .参数 本地文件, 文本型
  5. .参数 下载回调, 子程序指针, 可空, 3个参数;1=已下载,长整数型指针,可用{内存_指针_指针到长整数()}取出。2=速度,整数型。3=百分比,整数型。
  6. .局部变量 hOpen
  7. .局部变量 hOpenUrl
  8. .局部变量 bool, 逻辑型
  9. .局部变量 sReadBuffer, 字节型, , "0"
  10. .局部变量 lNumberOfBytesRead
  11. .局部变量 lCount, 长整数型
  12. .局部变量 hHttpQueryInfo
  13. .局部变量 sBuffer, 文本型
  14. .局部变量 FileSize
  15. .局部变量 handle
  16. .局部变量 StartTime
  17. .局部变量 TotalReadSize
  18. .局部变量 TimeConsuming, 整数型
  19. .局部变量 lSpeed, 整数型
  20. .局部变量 进度, , , , 单位:百分比。

  21. FileSize = 取文件大小 (网络文件)
  22. .如果真 (FileSize = 0)
  23.     返回 (假)
  24. .如果真结束
  25. hOpenUrl = FtpOpenFile (连接句柄, 网络文件, -2147483648, 2, 0)
  26. .如果真 (hOpenUrl = 0)
  27.     返回 (假)
  28. .如果真结束
  29. handle = 打开文件 (本地文件, 6, 1)
  30. StartTime = GetTickCount ()
  31. .循环判断首 ()
  32.     重定义数组 (sReadBuffer, 假, 2048)
  33.     bool = 读Internet文件_Bytes (hOpenUrl, sReadBuffer, 2048, lNumberOfBytesRead)
  34.     .如果 (lNumberOfBytesRead > 0 且 bool)
  35.         重定义数组 (sReadBuffer, 真, lNumberOfBytesRead)
  36.         lCount = lCount + lNumberOfBytesRead  ' 已下载
  37.         写出数据 (handle, sReadBuffer)
  38.         TotalReadSize = TotalReadSize + lNumberOfBytesRead
  39.         TimeConsuming = GetTickCount () - StartTime
  40.         .如果真 (TimeConsuming > 0)
  41.             lSpeed = TotalReadSize ÷ TimeConsuming  ' 速度
  42.         .如果真结束
  43.         进度 = 取整 (lCount ÷ FileSize × 100)  ' 百分比
  44.         .如果真 (是否为空 (下载回调) = 假 或 到整数 (下载回调) ≠ 0)
  45.             CallFunc (到整数 (下载回调), 内存_指针_取长整数指针 (lCount), lSpeed, 进度)
  46.         .如果真结束
  47.         处理事件 ()
  48.     .否则
  49.         跳出循环 ()
  50.     .如果结束
  51.     处理事件 ()
  52. .循环判断尾 (lNumberOfBytesRead ≠ 0)
  53. 关闭文件 (handle)
  54. InternetCloseHandle (hOpen)
  55. InternetCloseHandle (hOpenUrl)
  56. 返回 (真)

  57. .版本 2

  58. .子程序 进度上传, 逻辑型, 公开
  59. .参数 本地文件, 文本型
  60. .参数 远程文件, 文本型
  61. .参数 上传回调, 子程序指针, 可空, 3个参数:1=已上传[长整数指针];2=上传速度[整数型];3=百分比[整数型]
  62. .局部变量 hFile, 整数型
  63. .局部变量 bool, 逻辑型
  64. .局部变量 Size, 长整数型
  65. .局部变量 文件号
  66. .局部变量 lBlock, 整数型
  67. .局部变量 Data, 字节型, , "1024"
  68. .局部变量 Written, 整数型
  69. .局部变量 lCount, 长整数型
  70. .局部变量 StartTime, 整数型
  71. .局部变量 TotalReadSize, 整数型
  72. .局部变量 TimeConsuming, 整数型
  73. .局部变量 lSpeed, 整数型
  74. .局部变量 进度, 整数型

  75. hFile = FtpOpenFile (连接句柄, 远程文件, 1073741824, 2, 0)
  76. .如果真 (hFile = 0)
  77.     返回 (假)
  78. .如果真结束
  79. 文件号 = 打开文件 (本地文件, #读入, #无限制)
  80. Size = 取字节集数据 (到字节集 (取文件长度 (文件号)), #长整数型, )
  81. StartTime = GetTickCount ()

  82. .变量循环首 (1, Size \ 1024, 1, lBlock)
  83.     读入数据 (文件号, Data)
  84.     bool = InternetWriteFile (hFile, Data, 1024, Written)
  85.     .如果 (bool 且 Written > 0)
  86.         重定义数组 (Data, 假, Written)
  87.         lCount = lCount + Written  ' 已下载
  88.         TotalReadSize = TotalReadSize + Written
  89.         TimeConsuming = GetTickCount () - StartTime
  90.         .如果真 (TimeConsuming > 0)
  91.             lSpeed = TotalReadSize ÷ TimeConsuming  ' 速度
  92.         .如果真结束
  93.         进度 = 取整 (lCount ÷ Size × 100)  ' 百分比
  94.         .如果真 (到整数 (上传回调) ≠ 0)
  95.             CallFunc (到整数 (上传回调), 内存_指针_取长整数指针 (lCount), lSpeed, 进度)
  96.         .如果真结束

  97.     .否则
  98.         跳出循环 ()
  99.     .如果结束
  100.     处理事件 ()
  101. .变量循环尾 ()
  102. 关闭文件 (文件号)
  103. InternetCloseHandle (hFile)
  104. 返回 (真)
复制代码
回复 支持 反对

使用道具 举报

结帖率:0% (0/11)
 楼主| 发表于 2016-4-14 01:45:06 | 显示全部楼层   四川省眉山市
萧阳天 发表于 2016-4-11 20:49
好的建议最好附带源码,谢谢!

该加的都加了
有些我也看不太懂

精易模块5.30-功能已加上.rar

494.88 KB, 下载次数: 83, 下载积分: 精币 -2 枚

回复 支持 反对

使用道具 举报

结帖率:0% (0/11)
 楼主| 发表于 2016-4-14 01:43:11 | 显示全部楼层   四川省眉山市
萧阳天 发表于 2016-4-11 20:49
好的建议最好附带源码,谢谢!
  
子程序名返回值类型公开备 注
进度下载逻辑型 
参数名类 型参考可空数组备 注
网络文件文本型
本地文件文本型
下载回调子程序指针3个参数;1=已下载,长整数型指针,可用{内存_指针_指针到长整数()}取出。2=每秒速度,整数型。3=百分比,整数型。
变量名类 型静态数组备 注
匿名局部变量_46418整数型 
句柄整数型 
匿名局部变量_46420逻辑型 
已下载数据字节型0
匿名局部变量_46422整数型 
匿名局部变量_46423长整数型 
匿名局部变量_46424整数型 
匿名局部变量_46425文本型 
网络文件大小长整数型 
文件号整数型 
启动时间整数型 
匿名局部变量_46429整数型 
匿名局部变量_46430整数型 
匿名局部变量_46431整数型 
匿名局部变量_46432整数型 
网络文件大小 = 文件取大小 (网络文件)
如果真 (网络文件大小 = 0)
返回 ()
句柄 = FtpOpenFileA (连接句柄, 网络文件, 2147483648, 2, 0)
如果真 (句柄 = 0)
返回 ()
文件号 = 打开文件 (本地文件, 4, 3)
启动时间 = GetTickCount ()
循环判断首 ()
重定义数组 (已下载数据, 假, 2048)
匿名局部变量_46420 = InternetReadFile (句柄, 已下载数据, 2048, 匿名局部变量_46422)
如果 (匿名局部变量_46422 > 0 匿名局部变量_46420)
重定义数组 (已下载数据, 真, 匿名局部变量_46422)
匿名局部变量_46423 = 匿名局部变量_46423 + 匿名局部变量_46422
写出数据 (文件号, 已下载数据)
匿名局部变量_46429 = 匿名局部变量_46429 + 匿名局部变量_46422
匿名局部变量_46430 = GetTickCount () - 启动时间
如果真 (匿名局部变量_46430 > 0)
匿名局部变量_46431 = 匿名局部变量_46429 ÷ 匿名局部变量_46430
匿名局部变量_46432 = 取整 (匿名局部变量_46423 ÷ 网络文件大小 × 100)
如果真 (是否为空 (下载回调) 到整数 (下载回调) ≠ 0)
程序_Call (到整数 (下载回调), 内存_指针_取长整数指针 (匿名局部变量_46423), 匿名局部变量_46431, 匿名局部变量_46432, 内存_指针_取长整数指针 (网络文件大小))
处理事件 ()
跳出循环 ()
处理事件 ()
循环判断尾 (匿名局部变量_46422 ≠ 0)
关闭文件 (文件号)
InternetCloseHandle (匿名局部变量_46418)
InternetCloseHandle (句柄)
返回 ()
子程序名返回值类型公开备 注
进度上传逻辑型 
参数名类 型参考可空数组备 注
本地文件文本型
远程文件文本型
上传回调子程序指针3个参数:1=已上传[长整数指针];2=上传速度[整数型];3=百分比[整数型]
变量名类 型静态数组备 注
匿名局部变量_46484整数型 
匿名局部变量_46513逻辑型 
匿名局部变量_46485长整数型 
匿名局部变量_46486整数型 
匿名局部变量_46487整数型 
匿名局部变量_46488字节型1024
匿名局部变量_46499整数型 
匿名局部变量_46502长整数型 
匿名局部变量_46512整数型 
匿名局部变量_46526整数型 
匿名局部变量_46527整数型 
匿名局部变量_46528整数型 
匿名局部变量_46530整数型 
匿名局部变量_46484 = FtpOpenFileA (连接句柄, 远程文件, 1073741824, 2, 0)
如果真 (匿名局部变量_46484 = 0)
返回 ()
匿名局部变量_46486 = 打开文件 (本地文件, #读入, #无限制 )
匿名局部变量_46485 = 取字节集数据 (到字节集 (取文件长度 (匿名局部变量_46486)), #长整数型, )
匿名局部变量_46512 = GetTickCount ()
变量循环首 (1, 匿名局部变量_46485 \ 1024, 1, 匿名局部变量_46487)
读入数据 (匿名局部变量_46486, 匿名局部变量_46488)
匿名局部变量_46513 = InternetWriteFile (匿名局部变量_46484, 匿名局部变量_46488, 1024, 匿名局部变量_46499)
如果 (匿名局部变量_46513 匿名局部变量_46499 > 0)
重定义数组 (匿名局部变量_46488, 假, 匿名局部变量_46499)
匿名局部变量_46502 = 匿名局部变量_46502 + 匿名局部变量_46499
匿名局部变量_46526 = 匿名局部变量_46526 + 匿名局部变量_46499
匿名局部变量_46527 = GetTickCount () - 匿名局部变量_46512
如果真 (匿名局部变量_46527 > 0)
匿名局部变量_46528 = 匿名局部变量_46526 ÷ 匿名局部变量_46527
匿名局部变量_46530 = 取整 (匿名局部变量_46502 ÷ 匿名局部变量_46485 × 100)
如果真 (到整数 (上传回调) ≠ 0)
程序_Call (到整数 (上传回调), 取指针地址_长整数型 (匿名局部变量_46502), 匿名局部变量_46528, 匿名局部变量_46530)

跳出循环 ()
处理事件 ()
变量循环尾 ()
InternetCloseHandle (匿名局部变量_46484)
关闭文件 (匿名局部变量_46486)
返回 ()

回复 支持 反对

使用道具 举报

结帖率:0% (0/11)
 楼主| 发表于 2016-4-14 01:41:44 | 显示全部楼层   四川省眉山市
萧阳天 发表于 2016-4-11 20:49
好的建议最好附带源码,谢谢!
  
子程序名返回值类型公开备 注
进度下载逻辑型 
参数名类 型参考可空数组备 注
网络文件文本型
本地文件文本型
下载回调子程序指针3个参数;1=已下载,长整数型指针,可用{内存_指针_指针到长整数()}取出。2=每秒速度,整数型。3=百分比,整数型。
变量名类 型静态数组备 注
匿名局部变量_46418整数型 
句柄整数型 
匿名局部变量_46420逻辑型 
已下载数据字节型0
匿名局部变量_46422整数型 
匿名局部变量_46423长整数型 
匿名局部变量_46424整数型 
匿名局部变量_46425文本型 
网络文件大小长整数型 
文件号整数型 
启动时间整数型 
匿名局部变量_46429整数型 
匿名局部变量_46430整数型 
匿名局部变量_46431整数型 
匿名局部变量_46432整数型 
网络文件大小 = 文件取大小 (网络文件)
如果真 (网络文件大小 = 0)
返回 ()
句柄 = FtpOpenFileA (连接句柄, 网络文件, 2147483648, 2, 0)
如果真 (句柄 = 0)
返回 ()
文件号 = 打开文件 (本地文件, 4, 3)
启动时间 = GetTickCount ()
循环判断首 ()
重定义数组 (已下载数据, 假, 2048)
匿名局部变量_46420 = InternetReadFile (句柄, 已下载数据, 2048, 匿名局部变量_46422)
如果 (匿名局部变量_46422 > 0 匿名局部变量_46420)
重定义数组 (已下载数据, 真, 匿名局部变量_46422)
匿名局部变量_46423 = 匿名局部变量_46423 + 匿名局部变量_46422
写出数据 (文件号, 已下载数据)
匿名局部变量_46429 = 匿名局部变量_46429 + 匿名局部变量_46422
匿名局部变量_46430 = GetTickCount () - 启动时间
如果真 (匿名局部变量_46430 > 0)
匿名局部变量_46431 = 匿名局部变量_46429 ÷ 匿名局部变量_46430
匿名局部变量_46432 = 取整 (匿名局部变量_46423 ÷ 网络文件大小 × 100)
如果真 (是否为空 (下载回调) 到整数 (下载回调) ≠ 0)
程序_Call (到整数 (下载回调), 内存_指针_取长整数指针 (匿名局部变量_46423), 匿名局部变量_46431, 匿名局部变量_46432, 内存_指针_取长整数指针 (网络文件大小))
处理事件 ()
跳出循环 ()
处理事件 ()
循环判断尾 (匿名局部变量_46422 ≠ 0)
关闭文件 (文件号)
InternetCloseHandle (匿名局部变量_46418)
InternetCloseHandle (句柄)
返回 ()
子程序名返回值类型公开备 注
进度上传逻辑型 
参数名类 型参考可空数组备 注
本地文件文本型
远程文件文本型
上传回调子程序指针3个参数:1=已上传[长整数指针];2=上传速度[整数型];3=百分比[整数型]
变量名类 型静态数组备 注
匿名局部变量_46484整数型 
匿名局部变量_46513逻辑型 
匿名局部变量_46485长整数型 
匿名局部变量_46486整数型 
匿名局部变量_46487整数型 
匿名局部变量_46488字节型1024
匿名局部变量_46499整数型 
匿名局部变量_46502长整数型 
匿名局部变量_46512整数型 
匿名局部变量_46526整数型 
匿名局部变量_46527整数型 
匿名局部变量_46528整数型 
匿名局部变量_46530整数型 
匿名局部变量_46484 = FtpOpenFileA (连接句柄, 远程文件, 1073741824, 2, 0)
如果真 (匿名局部变量_46484 = 0)
返回 ()
匿名局部变量_46486 = 打开文件 (本地文件, #读入, #无限制 )
匿名局部变量_46485 = 取字节集数据 (到字节集 (取文件长度 (匿名局部变量_46486)), #长整数型, )
匿名局部变量_46512 = GetTickCount ()
变量循环首 (1, 匿名局部变量_46485 \ 1024, 1, 匿名局部变量_46487)
读入数据 (匿名局部变量_46486, 匿名局部变量_46488)
匿名局部变量_46513 = InternetWriteFile (匿名局部变量_46484, 匿名局部变量_46488, 1024, 匿名局部变量_46499)
如果 (匿名局部变量_46513 匿名局部变量_46499 > 0)
重定义数组 (匿名局部变量_46488, 假, 匿名局部变量_46499)
匿名局部变量_46502 = 匿名局部变量_46502 + 匿名局部变量_46499
匿名局部变量_46526 = 匿名局部变量_46526 + 匿名局部变量_46499
匿名局部变量_46527 = GetTickCount () - 匿名局部变量_46512
如果真 (匿名局部变量_46527 > 0)
匿名局部变量_46528 = 匿名局部变量_46526 ÷ 匿名局部变量_46527
匿名局部变量_46530 = 取整 (匿名局部变量_46502 ÷ 匿名局部变量_46485 × 100)
如果真 (到整数 (上传回调) ≠ 0)
程序_Call (到整数 (上传回调), 取指针地址_长整数型 (匿名局部变量_46502), 匿名局部变量_46528, 匿名局部变量_46530)

跳出循环 ()
处理事件 ()
变量循环尾 ()
InternetCloseHandle (匿名局部变量_46484)
关闭文件 (匿名局部变量_46486)
返回 ()

回复 支持 反对

使用道具 举报

结帖率:100% (9/9)
发表于 2016-4-11 20:49:36 | 显示全部楼层   广东省深圳市
好的建议最好附带源码,谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表