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

 

ファイルをバックアップするタスクを実現するために、このライブラリを使用する方法:

フォルダに入れることができるアーカイブを作成する必要があります。

\평

\ЪMQL5/Indicators

\MQL5/Include。

etc。?

 
Alexandr Gavrilin #:

このライブラリを使って、このようなファイル・バックアップ・タスクを実装する方法:

ファイルをフォルダに分散できるアーカイブを作成する必要があります。

\ファイルをフォルダに分散できるアーカイブを作成する必要がある。

\˂MQL5/Indicators

etc.?

いい例がある

MQL5 Program Packer
MQL5 Program Packer
  • www.mql5.com
This is MQL5 project packer: assemble all source and resource files from dependencies into a single ZIP.
 
fxsaber #:

いい例がある

ありがとう。クライアントに異なるアーカイブのファイルを定期的に更新するのに疲れました。自動化が必要だ。

 
fxsaber #:

いい例がある

ありがとう!


追記

ex5 , ex4ファイルはパックできないので、正確に投げる必要がある。

mq5は問題なくスローされ、メニューの解像度ex5は、すべてのエラー間違ったファイル名5002場合。

//+------------------------------------------------------------------+
//|UpdateShop.mq5
//|著作権 2021, MetaQuotes Ltd.|
//|https://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

// #define UNICODE_WARNING
#include <mql5/FileReader.mqh>
#include <Zip/Zip.mqh>
string sdir="MQL5/Experts/trading-shop.ru/";

string filelist[]=
  {
   "sovetnikov.net/WSO EA.mq5",
   "sovetnikov.net/SN Liza EA.mq5"
  };


CZip Zip;      // 空のzipアーカイブを作成する。

//+------------------------------------------------------------------+
//| スクリプト番組開始機能|
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int added=0;
   string listing="";
   for(int i=0; i<ArraySize(filelist); i++)
     {
      string name=sdir+filelist[i];

      CZipFile *file = new CZipFile();
      if(!file.AddFile(name)
         || !Zip.AddFile(file))
        {
         delete file;
        }
      else
        {
         added++;
         Print(" + "+name);
        }

     }

   if(added>0)
     {
      //カタログの作成

      //アーカイブをファイルに保存する
      const string archive = "MQL5/Files/Test.zip";
      if(Zip.SaveZipToFile(archive))
        {
         Print("Packed file saved: ", archive);
        }
     }
  }
//+----------------------------------------------------------------
ファイルを安全に扱えるようにしてくれた開発者に改めて感謝する......。また別の松葉杖を作る。
 

こんにちは、


このファイルを文字列に読み込む方法。(ディスクに保存したり、ディスクから読み込んだりせずに)。

 
Forester #:

こんにちは、


このファイルを文字列に読み込む方法。(ディスクに保存したり、ディスクから読み込んだりせずに)。

https://www.mql5.com/ja/articles/1971

Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек
Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек
  • www.mql5.com
Язык MQL5 развивается, и в него постоянно добавляются новые функции для работы с данными. С некоторых пор, благодаря нововведениям, стало возможно работать с ZIP-архивами штатными средствами MQL5 без привлечения сторонних библиотек DLL. Данная статья подробно описывает, как это делается, на примере описания класса CZip — универсального инструмента для чтения, создания и модификации ZIP-архивов.
 

これはあなたが言及した記事のディスカッションスレッドです。私はZIPをディスク上のフォルダにアップロードする可能性だけを見ました。しかし、私はそれを一度にラインにアップロードしたいです。

 

もし必要な方がいらっしゃれば、アーカイブを一行で読むためのスクリプトを用意しました。

ZIPフォルダとDictionary.mqhのダウンロードはこちらhttps://www.mql5.com/en/code/27955- これらは動作します。

#property copyright "Copyright 2015, Vasiliy Sokolov."
#property link      "https://www.mql5.com"
#property version   "1.00"

int is_common=1;

#include <Zip\Zip.mqh>

CZip Zip;

void OnStart(){
   string filenames[]; if(FileSelectDialog("ダウンロードするファイルを選択", "CSV/", "CSV files (*.csv)|*.csv;*.zip|ZIP files (*.zip)|*.zip|All files (*.*)|*.*", FSD_ALLOW_MULTISELECT|(is_common?FSD_COMMON_FOLDER:0), filenames, "data.txt")>0){int total=ArraySize(filenames);for(int i=0; i<total; i++){Print(i, ": ", filenames[i]);}} else{Print("Files not selected");}

   bool res=Zip.LoadZipFromFile(filenames[0],FILE_COMMON);//считать 0й файл из выбранных
   if(!res) {
      uint last_error=GetLastError();
      if(last_error<ERR_USER_ERROR_FIRST){printf(「アーカイブのダウンロード中にシステムエラーが発生しました。エラー番号"+(string)last_error);}
      else {  ENUM_ZIP_ERROR error=(ENUM_ZIP_ERROR)(last_error-ERR_USER_ERROR_FIRST); printf(「アーカイブのダウンロード時にエラーが発生しました。+EnumToString(error));}
      return;
   }
   
   CZipFile* content = Zip.ElementAt(0);//アーカイブのファイル番号0を読む
   uchar file_content[];
   content.GetUnpackFile(file_content);// これをfile_content配列に展開する。

   string  s = CharArrayToString(file_content,0,-1,CP_UTF8);//CP_ACP
   
   string sa[];
   int k=StringSplit(s,'\n',sa);//--- 文字列を部分文字列に分割する
   for(int i=0;i<k;i++){
      PrintFormat("result[%d]=\"%s\"",i,sa[i]);
   }
}
MQL5 Program Packer
MQL5 Program Packer
  • www.mql5.com
This is MQL5 project packer: assemble all source and resource files from dependencies into a single ZIP.
 
一般的には、ターミナル自体にアーカイブ機能を追加するのがいいだろう。議論から判断すると、ファイルは定期的にコンパイルされなくなる。
 
何か最新情報はありますか?
エラーに遭遇しています。

'ZipLocalHeaderOpen' にはコンストラクタがあり、ユニオンメンバとして使用できません ZipHeader.mqh 52 23