文章 "单纯使用 MQL5 语言处理 ZIP 档案" - 页 5 123456789 新评论 M24 2018.10.16 19:56 #41 你好,瓦西里!情况如下:我从 OANDA 下载了一本订单位置书,它们是用 API v.2 包装的,当我尝试用 CZip 解压缩时,我得到了以下消息:"在加载时存档处理出错:ZIP_ERROR_BAD_FORMAT_ZIP"。我不知道它到底装了什么,但 WinZip 展开了接收到的文件。文件附后,以防万一。 附加的文件: oanda_data.txt 85 kb M24 2018.10.16 19:59 #42 存档文件无法附上,如果您需要,我可以发送到您的邮箱。 Alexey Oreshkin 2018.12.05 12:54 #43 我下载了压缩包,压缩包中有几个文件。我尝试解压缩,但没有任何效果。我查看了代码,发现了这个片段://+------------------------------------------------------------------+ //|| 解压当前 zip 内容并将其保存为磁盘文件。 //+------------------------------------------------------------------+ bool CZipContent::UnpackOnDisk(string folder, int file_common) { return false; } 我知道解压缩不起作用? fxsaber 2018.12.05 12:58 #44 Alexey Oreshkin: 我查看了代码,发现以下片段: 也就是说,我正确地理解为解压缩不起作用?在调试模式下查看代码,就会找到正确的片段。解压缩是有效的 - 我每天都在使用它。 Vasiliy Sokolov 2018.12.05 13:09 #45 Alexey Oreshkin: 我下载了压缩包,压缩包中有几个文件。我试图解压缩,但没有任何效果。我 查看了代码,发现了这样一个片段:所以我正确地理解为解压缩不起作用?不,不是这样的。仔细看,UnpackOnDisk 是一个虚拟方法。它在抽象类 Content 中没有实现。不幸的是,MQL 不允许创建没有实现的虚拟方法,所以你必须设置像你发现的这样的拦截器。将文件保存到磁盘的真正工作是由 CZipFile::UnpackOnDisk 和 CZipDirectory::UnpackOnDisk 完成的。这是因为在磁盘上创建目录和创建文件是不同的操作,因此它们由不同的方法完成。 Vasiliy Sokolov 2018.12.05 13:10 #46 M24: 存档文件无法附上,如果您需要,我会发送到您的邮箱。这其实是最重要的。首先,请确保您使用的是最新版本的 CZip,然后重新解压缩。 Alexey Oreshkin 2018.12.05 20:20 #47 fxsaber:在调试模式下查看代码,就能找到必要的部分。解压缩很有效,我每天都在用。那我到底做错了什么?这是我的代码: Zip.LoadZipFromFile("info.zip",FILE_COMMON); Zip.UnpackZipArchive("",FILE_COMMON); 我希望在公共文件夹中看到所有解压文件,但它是空的。我不需要其他东西。公共文件夹中有 info.zip。 fxsaber 2018.12.05 22:13 #48 Alexey Oreshkin:那我到底做错了什么?以下是我的代码:我希望在公共文件夹中看到所有解压文件,但它是空的。我不需要其他任何东西。公共文件夹中有 info.zip。你必须指定文件夹,因为双引号 会出错。 Alexey Oreshkin 2018.12.05 23:09 #49 fxsaber:您必须指定一个文件夹,因为双引号 会出错。老实说,没有任何变化: Zip.LoadZipFromFile("info.zip",FILE_COMMON); Zip.UnpackZipArchive("Test",FILE_COMMON);结果也是空的。 p.s. 我从文章中举了个例子 string cookie,headers; string mql_url="https://www.mql5.com/zh/code/download/9"; int timeout=5000; uchar data[],zip_array[]; if(!WebRequest("GET",mql_url,cookie,NULL,timeout,data,0,zip_array,headers)) { printf("Unable to download ZIP archive from "+mql_url+". Check request and permissions EA."); return; } if(!Zip.CreateFromCharArray(zip_array)) { printf("Loaded bad ZIP archive. Check results array."); return; } printf("Archive successfully loaded. Total files: "+(string)Zip.TotalElements()); Zip.UnpackZipArchive("Alligator",FILE_COMMON); 我更改了网址(在终端设置中允许访问),结果也是零。我本以为能把解析器从夏普转移到这里,但看来不行。我费了好大劲才把文件解压出来,结果什么都没有(......)。 fxsaber 2018.12.05 23:13 #50 Alexey Oreshkin:老实说,一切都没变:结果也是零。#include <Zip\Zip.mqh> //https://www.mql5.com/zh/articles/1971 void OnStart() { CZip Zip; Zip.LoadZipFromFile("Test.zip", FILE_COMMON); Zip.UnpackZipArchive("Temp", FILE_COMMON); } 附加的文件: Test.zip 151 kb 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我知道解压缩不起作用?
我查看了代码,发现以下片段:
也就是说,我正确地理解为解压缩不起作用?
在调试模式下查看代码,就会找到正确的片段。解压缩是有效的 - 我每天都在使用它。
我下载了压缩包,压缩包中有几个文件。我试图解压缩,但没有任何效果。我 查看了代码,发现了这样一个片段:
所以我正确地理解为解压缩不起作用?
不,不是这样的。仔细看,UnpackOnDisk 是一个虚拟方法。它在抽象类 Content 中没有实现。不幸的是,MQL 不允许创建没有实现的虚拟方法,所以你必须设置像你发现的这样的拦截器。将文件保存到磁盘的真正工作是由 CZipFile::UnpackOnDisk 和 CZipDirectory::UnpackOnDisk 完成的。这是因为在磁盘上创建目录和创建文件是不同的操作,因此它们由不同的方法完成。
存档文件无法附上,如果您需要,我会发送到您的邮箱。
这其实是最重要的。首先,请确保您使用的是最新版本的 CZip,然后重新解压缩。
在调试模式下查看代码,就能找到必要的部分。解压缩很有效,我每天都在用。
那我到底做错了什么?这是我的代码:
我希望在公共文件夹中看到所有解压文件,但它是空的。我不需要其他东西。公共文件夹中有 info.zip。
那我到底做错了什么?以下是我的代码:
我希望在公共文件夹中看到所有解压文件,但它是空的。我不需要其他任何东西。公共文件夹中有 info.zip。
你必须指定文件夹,因为双引号 会出错。
您必须指定一个文件夹,因为双引号 会出错。
老实说,没有任何变化:
结果也是空的。
p.s. 我从文章中举了个例子
我更改了网址(在终端设置中允许访问),结果也是零。我本以为能把解析器从夏普转移到这里,但看来不行。我费了好大劲才把文件解压出来,结果什么都没有(......)。
老实说,一切都没变:
结果也是零。