Diskussion zum Artikel "Die Arbeit mit ZIP-Archiven in MQL5 ohne Bibliotheken von Drittanbietern" - Seite 7

 

So verwenden Sie diese Bibliothek, um die Aufgabe der Sicherung von Dateien zu realisieren:

Sie müssen ein Archiv erstellen, in dem Sie in Ordnern ablegen können

\MQL5\Experts\

\MQL5/Indicators\

\MQL5/Include.

usw. ?

 
Alexandr Gavrilin #:

Wie man eine solche Dateisicherungsaufgabe mit dieser Bibliothek implementiert:

Sie müssen ein Archiv erstellen, in dem Sie die Dateien in Ordnern verstreuen können

\MQL5\Experts\

\MQL5/Indikatoren\

\MQL5\Include\

usw. ?

Hier ist ein gutes Beispiel.

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 #:

Hier ist ein gutes Beispiel.

Danke, ich werde es studieren. Ich bin es leid, regelmäßig Dateien in verschiedenen Archiven für Kunden zu aktualisieren. Das ist sehr zeitaufwendig und muss automatisiert werden.

 
fxsaber #:

Hier ist ein gutes Beispiel.

Danke, es funktioniert!


Nachtrag.

Sie können nicht packen ex5 , ex4 Dateien, und ich muss sie genau zu werfen.

Hier ist ein Test-Skript auf der Grundlage der vorgeschlagenen. mq5 wirft ohne Probleme, wenn das Menü Auflösung ex5 dann alle den Fehler falschen Dateinamen 5002.

//+------------------------------------------------------------------+
//|UpdateShop.mq5 |
//|Urheberrecht 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;      // Leeres Zip-Archiv erstellen.

//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
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)
     {
      //den Katalog erstellen

      //Speichern des Archivs in einer Datei
      const string archive = "MQL5/Files/Test.zip";
      if(Zip.SaveZipToFile(archive))
        {
         Print("Packed file saved: ", archive);
        }
     }
  }
//+----------------------------------------------------------------
Danke nochmal an die Entwickler für die Sicherheit beim Arbeiten mit files..... wieder eine weitere Krücke zu machen.
 

Hallo,

Ich habe ein ZIP-Archiv mit einer CSV-Datei darin.
Wie kann ich diese Datei in eine Zeichenkette einlesen. (Ohne Speichern auf der Festplatte und Lesen von der Festplatte)

 
Forester #:

Hallo,

Ich habe ein ZIP-Archiv mit einer CSV-Datei darin.
Wie kann ich diese Datei in eine Zeichenkette einlesen. (Ohne Speichern auf der Festplatte und Lesen von der Festplatte)

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

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

Dies ist der Diskussionsthread für den von Ihnen erwähnten Artikel. Ich habe nur die Möglichkeit gesehen, die ZIP-Datei in einen Ordner auf der Festplatte hochzuladen. Ich würde es aber gerne auf einmal in eine Zeile hochladen.

 

Wenn jemand es braucht, hier ist ein fertiges Skript zum Lesen des Archivs in einer Zeile.

ZIP-Ordner und Dictionary.mqh Download hier https://www.mql5.com/en/code/27955 - sie funktionieren.

#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("Dateien zum Herunterladen auswählen"., "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("Beim Herunterladen des Archivs ist ein Systemfehler aufgetreten. Fehlernummer: "+(string)last_error);}
      else {  ENUM_ZIP_ERROR error=(ENUM_ZIP_ERROR)(last_error-ERR_USER_ERROR_FIRST); printf("Beim Herunterladen des Archivs ist ein Fehler bei der Verarbeitung aufgetreten:"+EnumToString(error));}
      return;
   }
   
   CZipFile* content = Zip.ElementAt(0);//Lesen der Datei Nummer 0 im Archiv
   uchar file_content[];
   content.GetUnpackFile(file_content);// Entpacken in das Array file_content

   string  s = CharArrayToString(file_content,0,-1,CP_UTF8);//CP_ACP
   
   string sa[];
   int k=StringSplit(s,'\n',sa);//--- Zerlegung der Zeichenkette in Teilzeichenfolgen
   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.
 
Generell wäre es gut, dem Terminal selbst Archivierungsfunktionen hinzuzufügen. Der Diskussion nach zu urteilen, werden Dateien regelmäßig nicht mehr kompiliert.
 
Gibt es dazu Neuigkeiten? Ich stoße auf Fehler

ZipLocalHeaderOpen' hat einen Konstruktor und kann nicht als Union-Mitglied verwendet werden ZipHeader.mqh 52 23