記事"MQL5でのZIPアーカイブの扱い"についてのディスカッション - ページ 5

 
こんにちは、Vasily!OANDAからオーダーポジションの本をダウンロードしたのですが、API v.2で梱包された状態で届き、CZipを使って解凍しようとしたところ、次のようなメッセージが表示されました: "There was an error of archive processing at the moment of its loading: ZIP_ERROR_BAD_FORMAT_ZIP".何が詰まっているのかよく分からないが、WinZipは受け取ったファイルを展開する。念のためファイルを添付しておきます。
ファイル:
oanda_data.txt  85 kb
 
アーカイブファイルが添付できなかったので、必要ならあなたのメールに送ります。
 
zipをダウンロードしたのですが、アーカイブの中にいくつかのファイルがあります。それらを解凍しようとしましたが、何も動きません。コードを見ていて、この断片にたどり着きました:
//+------------------------------------------------------------------+
//|| 現在のZIPコンテンツを解凍し、ディスク上にファイルとして保存する。
//+------------------------------------------------------------------+
bool CZipContent::UnpackOnDisk(string folder, int file_common)
{
   return false;   
}


解凍がうまくいかないのは理解しましたか?
 
Alexey Oreshkin:


。つまり、解凍がうまくいかないということですね?

デバッグモードでコードを見てください。解凍は機能します - 私は毎日それを使用しています。

 
Alexey Oreshkin:
zipをダウンロードしたのですが、アーカイブの中にいくつかのファイルがあります。zipを解凍しようとしたのですが、うまくいきません。
。解凍がうまくいかないということでよろしいでしょうか?

いいえ、そうではありません。UnpackOnDiskは仮想メソッドです。抽象クラスContentには実装がありません。残念ながら、MQLは実装のない仮想メソッドを作成することを許可していないので、あなたが見つけたようなストッパーを置く必要があります。ファイルをディスクに保存する実際の作業はCZipFile::UnpackOnDiskとCZipDirectory::UnpackOnDiskによって行われます。ディレクトリの作成とディスク上のファイルの作成は異なる操作であるため、異なるメソッドで行われるからである。

 
M24:
アーカイブファイルが添付できなかったので、必要ならあなたのメールに送ります。

これが一番重要なことです。まず、CZipの最新バージョンを使用していることを確認し、もう一度解凍してみてください。

 
fxsaber:

デバッグモードでコードを見れば、必要な部分にたどり着くだろう。解凍はうまくいく。

では、私は何を間違えているのでしょう?これが私のコードです:

   Zip.LoadZipFromFile("info.zip",FILE_COMMON);
   Zip.UnpackZipArchive("",FILE_COMMON);

publicフォルダに解凍されたものがすべて入っていることを期待しているのですが、空っぽです。他には何も必要ありません。公開フォルダにはinfo.zipがあります。

 
Alexey Oreshkin:

私は何を間違えているのだろう。これが私のコードです:

publicフォルダに解凍されたものがすべて入っているはずだが、空っぽだ。他には何も必要ありません。公開フォルダにはinfo.zipがあります。

二重引用符は エラーになるので、フォルダを指定する必要があります。

 
fxsaber:

二重引用符は エラーになるので、フォルダを指定する必要がある。

正直なところ、何も変わっていない:

   Zip.LoadZipFromFile("info.zip",FILE_COMMON);
   Zip.UnpackZipArchive("Test",FILE_COMMON);

結果もNULLです。


p.s.記事の例を参考にしました。

   string cookie,headers;
   string mql_url="https://www.mql5.com/ja/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);

私はURLを変更しました(端末の設定でアクセスを許可しました)、そしてそれだけです、結果もゼロです。私はシャープからここにパーサーを転送すると思ったが、そうではなかったようだ。ファイルを解凍するだけで、こんなに苦労するのか。

 
Alexey Oreshkin:

正直、何も変わっていない:

結果もゼロだ。

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

void OnStart()
{
  CZip Zip;

  Zip.LoadZipFromFile("Test.zip", FILE_COMMON);
  Zip.UnpackZipArchive("Temp", FILE_COMMON);
}
ファイル:
Test.zip  151 kb