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

 

Drehbuch

#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) );

      }
  }
 
Dmytro Zelenskyy:

Hier ist ein weiteres Problem, wenn ich mehrere Archive in einer Schleife entpacken muss und dabei nur das Jahr im Namen ändere.

Nur d2014.zip wird entpackt und das war's.

Versuchen Sie, das Archiv nach dem Entpacken zu löschen.

#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();

      }
  }
 

YES!!!

Ich bin froh, dass ich es selbst erkannt habe und beschlossen habe, eine Lösung zu schreiben :))),

und dass es eine prompte Antwort gibt :))))

Dankeschön!

 

Dank an den Autor für die Bibliothek !!!

Ergebnisse zum Vergleich:


1. .bin - Daten werden geschrieben, indem die Daten von Struktur- und Klassenobjekten nacheinander in das Binärformat zurückgesetzt werden

2. .dat - Daten werden zuerst in ein BYTE-Array konvertiert und dann als Binärdaten auf die Festplatte geschrieben

3. .zip - Methode 2 + Softwarekompression

Protokoll der Verarbeitungsschritte Erstellung, Schreiben und Lesen ohne Komprimierung und mit Komprimierung:

nach jedem Lesen von Daten aus den Dateien wird eine Überprüfung mit den Originaldaten auf Korrektheit durchgeführt, es werden keine Fehler festgestellt ))
 
Die Bibliothek "schwebte" mit dem neuen Build 1816 (( Anscheinend haben sie einen Fehler in Union beseitigt und jetzt missbilligt sie die Verwendung eines Strukturobjekts mit einem Konstruktor in Union.
 
Konstantin:
Die Bibliothek ist mit dem neuen Build 1816 "gefloatet" (( Anscheinend wurde ein Fehler in union behoben und nun ist die Verwendung eines Strukturobjekts mit einem Konstruktor in union verpönt

Ich empfehle, die Verwendung eines Konstruktors für Strukturen, die an Union teilnehmen, abzulehnen

Anstelle von Konstruktoren ist es besser, die Initialise/Init-Funktion zu verwenden.

Wir werden eines Tages die Möglichkeit einführen, Strukturen mit Konstruktoren in Union zu verwenden, vorausgesetzt, dass Union einen expliziten/Benutzerkonstruktor hat. Die Art und Weise und die Reihenfolge des Konstruierens wird also dem Benutzer/Ersteller überlassen sein.

Aber wir können nicht sagen, wann (Antwort der Entwickler)
 
Rashid Umarov:

Ich empfehle, keinen Konstruktor für Strukturen zu verwenden, die an einer Union teilnehmen.

Anstelle von Konstruktoren ist es besser, die Funktion Initialise/Init zu verwenden.

Wir werden eines Tages die Möglichkeit einführen, Strukturen mit Konstruktoren in Union zu verwenden, vorausgesetzt, dass Union einen expliziten/benutzerdefinierten Konstruktor hat. Die Art und Weise und die Reihenfolge des Konstruierens wird also dem Benutzer/Ersteller überlassen sein.

Aber wir können nicht sagen, wann (Antwort des Entwicklers).

es hat keinen Sinn, das zu ändern, ich habe dem Entwickler bereits eine neu gestaltete Klasse ohne Konstruktoren in Strukturen geschickt, nur eine Init-Methode für die Initialisierung von Strukturen hinzugefügt und das ist alles, man muss nur das Problem mit den Zertifikaten unter Linux beheben, weil es so unvollständig ist ))

 
Korrekturen an der Header-Datei der Bibliothek.
Dateien:
ZipHeader.mqh  13 kb
 
Rashid Umarov:

Ich empfehle, keinen Konstruktor für Strukturen zu verwenden, die an einer Union teilnehmen.

Anstelle von Konstruktoren ist es besser, die Funktion Initialise/Init zu verwenden.

Wir werden eines Tages die Möglichkeit einführen, Strukturen mit Konstruktoren in Union zu verwenden, vorausgesetzt, dass Union einen expliziten/benutzerdefinierten Konstruktor hat. Die Art und Weise und die Reihenfolge des Konstruierens wird also dem Benutzer/Ersteller überlassen sein.

Aber wir können nicht sagen, wann wir dazu in der Lage sein werden (Antwort des Entwicklers).

Ich denke, Sie sind eindeutig im falschen Geschäft. Es gab ein explizites Casting von Strukturen - dann haben sie es aus irgendeinem Grund entfernt und entschieden, dass "type pun" union irgendwie besser ist als explizites Casting. Dann fing der Strukturkonstruktor an, die Union zu stören. Sie haben ihn auch verboten. Jetzt planen Sie, es wieder zu erlauben... Aber Ihre Aktionen führen dazu, dass viele Codes in CodeBase nicht mehr kompiliert werden können. Aber diese Neuerungen lösen keine Probleme.

 
Der CZip-Quellcode wurde für die Kompatibilität mit neueren Versionen des Compilers korrigiert. Updates werden nach Überprüfung durch einen Moderator verfügbar sein.