文章 "单纯使用 MQL5 语言处理 ZIP 档案" - 页 6

 
最好能将图书馆介绍给 const。例如
   ENUM_ZIP_TYPE        ZipType(void) const; 
 
fxsaber:

是的,所附文件可以正常工作。但我的不行。真奇怪。

附加的文件:
info.zip  575 kb
 
Alexey Oreshkin:

是的,所附文件可以正常工作。但我的不行。真奇怪。

#include <Zip\Zip.mqh> //https://www.mql5.com/zh/articles/1971

void OnStart()
{
  CZip Zip;

  if (Zip.LoadZipFromFile("info.zip", 0))
    Zip.UnpackZipArchive("Temp", 0);
  else
    Print(EnumToString((ENUM_ZIP_ERROR)(GetLastError() - ERR_USER_ERROR_FIRST))); // zip_error_bad_format_zip
}

用其他东西重新打包吧。

 
fxsaber:

用其他东西重新打包。

我通过webrequest 获得了这个文件。Zip 可以正常打开,Sharp 也没有问题。手工重新打包不是办法。关键在于自动化。
,我在这里获取文件:http://api.bestchange.ru/info.zip。

 
Alexey Oreshkin:

我通过webrequest 获得了这个文件。Zip 可以正常打开,Sharp 也没有问题。手工重新打包不是办法。
我从这里获取文件:http://api.bestchange.ru/info.zip

我也从网上下载过压缩包。但我不像你那么 "幸运"。这已经归功于库的作者了。我怀疑 ZIP 格式自诞生以来就没有被修改过。

 
fxsaber:

我怀疑 ZIP 格式自创建以来从未被修改过。

有可能,虽然作者每 5 秒钟就会更新一次。手动编辑也没有意义。
管它呢。那就保持原样吧。只是有些数据是通过 µl 解析的,所以我想把它们都移到这里来。我想情况并非如此。

 
Alexey Oreshkin:

我通过webrequest 获得了这个文件。Zip 可以正常打开,Sharp 也没有问题。手工重新打包不是办法。关键在于自动化。
,我在这里获取文件:http://api.bestchange.ru/info.zip。

感谢您的留言。我们会解决的。

至于 zip 格式本身,首先,它可能会有很大的不同;其次,很多以 zip 格式打包数据的库对其格式极为漠视(你好,微软;),所以你必须用手鼓在二进制文件周围跳舞,暗示里面的内容。让我提醒你,CZip 是一个开放的非商业项目。因此,你不能指望它无所不用其极,给它喂食各种垃圾,所以请理解这一事实。

 
Vasiliy Sokolov:

感谢您的留言。我们会调查的。

至于 zip 格式本身,首先,它可能会有很大的不同;其次,很多以 zip 格式打包数据的库都对其格式不屑一顾(你好,微软;),所以你必须在二进制文件周围打起手鼓,暗示里面的内容。让我提醒你,CZip 是一个开放的非商业项目。所以,你不能指望它无所不用其极,给它灌输各种垃圾信息,请理解这一点。

Vasily,没有抱怨,但无论如何,我希望这个问题能得到积极的解决。:)

 

瓦西里,你好!

我需要将通过 WebRequest 获取的 ZIP 文件的字节序列转换为 ZIP 压缩文件,并使用 MQL5 工具将其解压缩到光盘中。

读了您的文章后,我意识到这可能是一个解决方案。但是,我无法使用这个解决方案--在编译时,MetaEditor 无法生成可执行文件,理由是 CZip 类库中存在错误。

是否可以单独使用 CZip类的方法,特别是 CreateFromCharArray() 和 UnpackZipArchive(),将它们直接包含在脚本代码中?

在此先表示感谢。

 
Vasiliy Sokolov #:

臭名昭著的结构铸造是脏话。将更正后的版本保留在附件中。

#include <Zip\Zip.mqh>

z


Vasily,请更正 mt5 的库。
,我是从文章中提取的库。