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

 

新しい記事 MQL5でのZIPアーカイブの扱い はパブリッシュされました:

MQL5は常に進化しています。この度新しい機能が追加されました。この革新により、DLLなしでZIPアーカイブを標準MQL5ツールで実行できるようになりました。この記事ではCZipクラスの使い方と、ZIPアーカイブの読み込み・生成・修正を例として扱います。

かつてこの記事の著者はCryptDecode関数を添付しました。特にZIP配列をデコンプレスする方法は興味深いものでした。この修正はMetaTrader5の開発者によって、標準WebRequest関数を使っていくつかのサーバーからデータを抽出する方法として紹介されました。しかし、ZIPファイルのフォーマットの特性により、直接的に行うことは不可能でした。

さらなる情報が実現には必要でした。: アーカイブを開く以前にアーカイブを圧縮する方法を知る必要があり、 - Adler-32 そしてそれはかつて不可能でした。しかし、 この問題に関して議論し た際、CryptDecode と CryptEncodeをオーバーロードするリクエストにぶつかりました。転送データを開く際に、Adler32ハッシュを無視することができる特別なフ ラグです。技術的な経験がないユーザーのために、この技術革新は、簡単に説明することができます:それはZIPアーカイブの全機能を有効にします。この記 事では、ZIPファイル形式、データストレージのその詳細を記述し、アーカイブを操作するのに便利なオブジェクト指向のCZipクラスを提供しています。

各ZIPアーカイブバイトの順序付けられたシーケンスを含むバイナリファイルです。言い 変えれば、ZIPアーカイブのすべてのファイルは、名前、特性、プロパティがあります。(ファイルの修正時間)したがって、圧縮されたデータに加えて、そ の属性、およびその他のサービス情報の名前を格納します。サービス情報は、非常に特異的な様式で配置され、かつ、規則的な構造をしています。たとえば、 アーカイブに2つのファイルが含まれている場合 (File#1File#2), それは以下のスキームを有します:

作者: Vasiliy Sokolov

 

このコードをテストした人はいますか?mt 4で動作しますか?

 
ヒストリカル・データの印象的な圧縮は、前述のRAMコンテンツに適用するアイデアとともに、MT5ターミナルが必要とするメモリ・リソースの抜本的な削減が期待できることを示唆している。実現するか?
 
Vladimir Pastushak:

このコードをテストした人はいますか?mt 4で動作しますか?

動作するだけでなく、MetaCOT 2のようなプロジェクトで 存分に使用されています。
 
Vladimir:
ヒストリカル・データの印象的な圧縮は、前述のRAMコンテンツに適用するアイデアとともに、MT5ターミナルが必要とするメモリ・リソースの抜本的な削減が期待できることを示唆している。それは実現するのでしょうか?
MT5自体は、ほとんどリソースを必要としません。しかし、気配値を要求する場合、「履歴の最大バー」変数に応じてメモリが使用されます。この失敗したバグが修正されたかどうかは分かりませんが、削除することを約束しました。
 

コンパイル時にこのようなことが起こります。

ZipHeader.mqhにエラーがあります。

 

悪名高い構造のキャスティングは悪態をつくことである。修正版を添付ファイルに保管してください。

ファイル:
Zip.zip  11 kb
 
Vasiliy Sokolov:

悪名高い構造物の鋳造は悪態をつくことである。添付ファイルの修正版です。

MT4で動作しますか?私はこのような状況です。
'm_array' - structures containing objects are not allowed       Dictionary.mqh  252     25
cannot cast 'DoubleValue' to 'ULongValue'       Dictionary.mqh  209     14
 
Stanislav Korotky:
MT4でも動作しますか?このような状況です。

プロパティ #strist は 役に立ちますか?

 

新しいバージョンでは、構造フィールドが埋められていない場合、アーカイブからデータ構造を 抽出するメカニズムが追加された。(Microsoft製品は高い塔から標準を吐き出し、単に「ファイルサイズ」のようなフィールドを埋めないことに気づきました)。新バージョンでは、このような問題のあるアーカイブでも動作するようになった。

新しいバージョンはすでに記事にアーカイブを追加しました。すでに更新されているようなので、記事の添付ファイルをダウンロードしてください。

 
Stanislav Korotky:
MT4でも動作しますか?私も同じ状況です。

構造体をキャストしている状況は同じですが、CDictionary という別のコンテナに入っています。IncludeDictionary.mqh を以下に添付したバリアントに置き換えてください。

そして、はい、すべてがMT4で問題なく動作して おり、CZipはMT4上の私のプロジェクトにおける 主力です。

ファイル:
Dictionary.mqh  38 kb