記事"MQL5でのZIPアーカイブの扱い"についてのディスカッション - ページ 3 12345678910 新しいコメント 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 ライブラリーのクレジットは著者に!比較の結果1. .bin - 構造体やクラスオブジェクトのデータを1つずつバイナリ形式にリセットして書き込む。2. .dat - データをまずBYTE配列に変換し、バイナリデータとしてディスクにダンプする。3. .zip - 方法2 + ソフトウェア圧縮圧縮なしと圧縮ありの作成、書き込み、読み取りの処理段階のログ: ファイルからデータを読み出すたびに、元のデータとの整合性のチェックが行われ、エラーは検出されなかった )) Konstantin 2018.05.04 17:47 #25 新しいビルド1816でライブラリが "浮いた"(( どうやらユニオンのバグを取り除いたようで、ユニオンのコンストラクタで構造体オブジェクトを使うのを嫌がるようになった。 Rashid Umarov 2018.05.14 13:34 #26 Konstantin: 新しいビルド1816でライブラリが "浮いた"(( どうやらunionのバグを取り除いたようで、unionでコンストラクタを持つ構造体オブジェクトの使用を嫌がるようになった。私は、unionに参加する構造体にコンストラクタを使わないことを推奨する。 コンストラクタの代わりにInitialise/Init関数を 使うのがよい。私たちとしては、unionに明示的/ユーザー・コンストラクタがある場合に限り、コンストラクタを持つ構造体をunionで使用する機能をいつか追加するつもりです。つまり、構築の方法や順序は、ユーザーや作成者の良心に委ねられることになる。 しかし、いつとは言えません。 Konstantin 2018.05.14 13:55 #27 Rashid Umarov:ユニオンに参加する構造体にはコンストラクタを使用しないことをお勧めします。 コンストラクタの代わりに、Initialise/Init関数を使用することをお勧めします。私たちとしては、ユニオンに明示的/ユーザー定義コンストラクタがあれば、いつかコンストラクタを持つ構造体をユニオンで使えるようにする予定です。つまり、コンストラクタの作り方や順番は、ユーザーや作成者の良心に委ねられることになる。 しかし、いつとは言えません(開発者の回答)。構造体のコンストラクタをなくし、構造体の初期化のための Init メソッドを追加しただけです。) 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 のソースコードを修正しました。モデレータによる検証の後、アップデートが利用可能になります。 12345678910 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
スクリプト
ここでもう一つ問題がある。複数のアーカイブをループで解凍する必要がある場合、名前の年だけを変更する必要がある。
d2014.zipだけが解凍されてしまいます。
解凍後にアーカイブをクリアしてみてください。
そうなんです!
自分で気づいて、解決策を書くことにしてよかった :)))、
そして、早速のお返事 :)))))
ありがとうございます!
ライブラリーのクレジットは著者に!
比較の結果
1. .bin - 構造体やクラスオブジェクトのデータを1つずつバイナリ形式にリセットして書き込む。
2. .dat - データをまずBYTE配列に変換し、バイナリデータとしてディスクにダンプする。
3. .zip - 方法2 + ソフトウェア圧縮
圧縮なしと圧縮ありの作成、書き込み、読み取りの処理段階のログ:

ファイルからデータを読み出すたびに、元のデータとの整合性のチェックが行われ、エラーは検出されなかった ))新しいビルド1816でライブラリが "浮いた"(( どうやらunionのバグを取り除いたようで、unionでコンストラクタを持つ構造体オブジェクトの使用を嫌がるようになった。
私は、unionに参加する構造体にコンストラクタを使わないことを推奨する。
コンストラクタの代わりにInitialise/Init関数を 使うのがよい。
私たちとしては、unionに明示的/ユーザー・コンストラクタがある場合に限り、コンストラクタを持つ構造体をunionで使用する機能をいつか追加するつもりです。つまり、構築の方法や順序は、ユーザーや作成者の良心に委ねられることになる。
しかし、いつとは言えません。ユニオンに参加する構造体にはコンストラクタを使用しないことをお勧めします。
コンストラクタの代わりに、Initialise/Init関数を使用することをお勧めします。
私たちとしては、ユニオンに明示的/ユーザー定義コンストラクタがあれば、いつかコンストラクタを持つ構造体をユニオンで使えるようにする予定です。つまり、コンストラクタの作り方や順番は、ユーザーや作成者の良心に委ねられることになる。
しかし、いつとは言えません(開発者の回答)。構造体のコンストラクタをなくし、構造体の初期化のための Init メソッドを追加しただけです。)
ユニオンに参加する構造体にはコンストラクタを使用しないことをお勧めします。
コンストラクタの代わりに、Initialise/Init関数を使用することをお勧めします。
私たちとしては、ユニオンに明示的/ユーザー定義コンストラクタがあれば、いつかコンストラクタを持つ構造体をユニオンで使えるようにする予定です。つまり、コンストラクタの作り方や順序は、ユーザーや作成者の良心に委ねられることになる。
しかし、いつできるようになるかはわかりません(開発者の回答)。明らかに間違ったビジネスをしていると思う。構造体には明示的なキャストがあった。その後、何らかの理由でそれを削除し、明示的なキャストよりも「タイプ・パン」ユニオンの方がどうにかマシだと判断したのだ。その後、構造体コンストラクタがユニオンの邪魔をし始めた。それも禁止された。そして今、またそれを許可しようとしている。しかし、あなたの行動のせいで、CodeBaseの多くのコードがコンパイルできなくなった。しかし、これらの革新は何の問題も解決しない。