文章 "单纯使用 MQL5 语言处理 ZIP 档案" - 页 3 123456789 新评论 Dmytro Zelenskyy 2017.08.10 01:03 #21 脚本#include <Zip\Zip.mqh> CZip Zip; void OnStart() { //--- string pathdir = "DD\\"; for(int yy2 = 2014; yy2 <= 2017; yy2++) { string FileArc = pathdir + "d" + IntegerToString(yy2) + ".zip"; Print("-------------- ", FileArc); Print(FileArc, " Zip.LoadZipFromFile= ", Zip.LoadZipFromFile(FileArc, 0) ); printf("Archive successfully loaded. Total files: "+(string)Zip.TotalElements()); Print("Zip.UnpackZipArchive= ", Zip.UnpackZipArchive(pathdir + "H" + IntegerToString(yy2), 0) ); } } Vasiliy Sokolov 2017.08.10 12:02 #22 Dmytro Zelenskyy:另一个问题是,如果我需要循环解压多个压缩包,只更改名称中的年份。只有 d2014.zip 被解压,仅此而已。试着在解压后清除压缩包。#include <Zip\Zip.mqh> CZip Zip; void OnStart() { //--- string pathdir = "DD\\"; for(int yy2 = 2014; yy2 <= 2017; yy2++) { string FileArc = pathdir + "d" + IntegerToString(yy2) + ".zip"; Print("-------------- ", FileArc); Print(FileArc, " Zip.LoadZipFromFile= ", Zip.LoadZipFromFile(FileArc, 0) ); printf("Archive successfully loaded. Total files: "+(string)Zip.TotalElements()); Print("Zip.UnpackZipArchive= ", Zip.UnpackZipArchive(pathdir + "H" + IntegerToString(yy2), 0) ); Zip.Clear(); } } Dmytro Zelenskyy 2017.08.10 12:24 #23 是的我很高兴我自己意识到了这一点,并决定写一个解决方案:)))、 并得到了及时回复 :))))谢谢! Konstantin 2017.12.07 18:51 #24 归功于作者的图书馆!!!比较结果.bin - 数据是通过将结构和类对象中的数据逐一重置为二进制格式写入的。.dat - 首先将数据转换为 BYTE 数组,然后将其作为二进制数据转储到磁盘中。.zip - 方法 2 + 软件压缩在未压缩和已压缩的情况下,创建、写入和读取处理阶段的日志: 每次从文件中读取数据后,都要与原始数据进行正确性检查,未发现任何错误 )) Konstantin 2018.05.04 17:47 #25 在新的 1816 版本中,程序库 "浮动 "了()。显然,他们删除了联合程序中的一个错误,现在它不允许在联合程序中使用带有构造函数的结构对象。 Rashid Umarov 2018.05.14 13:34 #26 Konstantin: 在新的 1816 版本中,库 "浮动 "了()。显然,他们删除了联合库中的一个错误,现在它不允许在联合库中使用带有构造函数的结构对象。我建议拒绝为参与联合的结构对象使用构造函数 与其使用构造函数,不如使用Initialise/Init 函数。就我们而言,有朝一日我们将添加在联合体中使用带有构造函数的结构的功能,前提是联合体具有显式/用户构造函数。因此,构造的方式和顺序将取决于用户/创建者的意愿。 但我们无法确定具体时间(开发人员回复) Konstantin 2018.05.14 13:55 #27 Rashid Umarov:我建议不要对参与联合的结构使用构造函数 与其使用构造函数,不如使用 Initialise/Init 函数。就我们而言,有朝一日我们将添加在联合结构中使用带有构造函数的结构的功能,前提是联合结构具有显式/用户定义的构造函数。因此,构造的方式和顺序将取决于用户/创建者的意愿。 但我们不能说什么时候(开发者回复)。没有必要修改,我已经给开发人员发了一个重新设计的类,只是没有结构体的构造函数,只是增加了结构体初始化的 Init 方法,仅此而已,你只需解决 Linux 下证书的问题,因为它太不完整了 )) fxsaber 2018.06.09 19:19 #28 修正库头文件。 附加的文件: ZipHeader.mqh 13 kb Vasiliy Sokolov 2018.06.09 19:48 #29 Rashid Umarov:我建议不要对参与联合的结构使用构造函数 与其使用构造函数,不如使用 Initialise/Init 函数。就我们而言,有朝一日我们将添加在联合结构中使用带有构造函数的结构的功能,前提是联合结构具有显式/用户定义的构造函数。因此,构造的方式和顺序将取决于用户/创建者的意愿。 但我们也说不准什么时候能做到这一点(开发人员回复)。我认为你们显然是搞错了。结构体本来是可以显式转换的,但不知出于什么原因,他们取消了这种转换,并认为 "类型双关 "联合比显式转换更好。然后,结构构造函数开始干扰联合。他们也禁止了它。现在你们又打算允许它了......但你们的行为导致 CodeBase 中的许多代码现在无法编译。但这些创新并不能解决任何问题。 Vasiliy Sokolov 2018.06.09 19:50 #30 更正了 CZip 源代码,以便与较新版本的编译器兼容。更新将在版主核实后提供。 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
脚本
另一个问题是,如果我需要循环解压多个压缩包,只更改名称中的年份。
只有 d2014.zip 被解压,仅此而已。
试着在解压后清除压缩包。
是的
我很高兴我自己意识到了这一点,并决定写一个解决方案:)))、
并得到了及时回复 :))))
谢谢!
归功于作者的图书馆!!!
比较结果
.bin - 数据是通过将结构和类对象中的数据逐一重置为二进制格式写入的。
.dat - 首先将数据转换为 BYTE 数组,然后将其作为二进制数据转储到磁盘中。
.zip - 方法 2 + 软件压缩
在未压缩和已压缩的情况下,创建、写入和读取处理阶段的日志:

每次从文件中读取数据后,都要与原始数据进行正确性检查,未发现任何错误 ))在新的 1816 版本中,库 "浮动 "了()。显然,他们删除了联合库中的一个错误,现在它不允许在联合库中使用带有构造函数的结构对象。
我建议拒绝为参与联合的结构对象使用构造函数
与其使用构造函数,不如使用Initialise/Init 函数。
就我们而言,有朝一日我们将添加在联合体中使用带有构造函数的结构的功能,前提是联合体具有显式/用户构造函数。因此,构造的方式和顺序将取决于用户/创建者的意愿。
但我们无法确定具体时间(开发人员回复)我建议不要对参与联合的结构使用构造函数
与其使用构造函数,不如使用 Initialise/Init 函数。
就我们而言,有朝一日我们将添加在联合结构中使用带有构造函数的结构的功能,前提是联合结构具有显式/用户定义的构造函数。因此,构造的方式和顺序将取决于用户/创建者的意愿。
但我们不能说什么时候(开发者回复)。没有必要修改,我已经给开发人员发了一个重新设计的类,只是没有结构体的构造函数,只是增加了结构体初始化的 Init 方法,仅此而已,你只需解决 Linux 下证书的问题,因为它太不完整了 ))
我建议不要对参与联合的结构使用构造函数
与其使用构造函数,不如使用 Initialise/Init 函数。
就我们而言,有朝一日我们将添加在联合结构中使用带有构造函数的结构的功能,前提是联合结构具有显式/用户定义的构造函数。因此,构造的方式和顺序将取决于用户/创建者的意愿。
但我们也说不准什么时候能做到这一点(开发人员回复)。我认为你们显然是搞错了。结构体本来是可以显式转换的,但不知出于什么原因,他们取消了这种转换,并认为 "类型双关 "联合比显式转换更好。然后,结构构造函数开始干扰联合。他们也禁止了它。现在你们又打算允许它了......但你们的行为导致 CodeBase 中的许多代码现在无法编译。但这些创新并不能解决任何问题。