Обсуждение статьи "Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек" - страница 3

 

Скрипт

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

Вот еще проблема всплыла, если мне нужно в цикле распаковать несколько архивов подряд, меняя только год в названии.

Распаковывается только 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();

      }
  }
 

YES!!!

Радует то, что сам допер, и решил написать решение :)),

а тут оперативный ответ еже есть :))

Спасибо!

 

автору зачет за библиотеку !!!

результаты для сравнения:


1. .bin - данные записаны сбросом в бинарный формат по очереди данных из объектов структур и классов

2. .dat - данные сперва сконвертированы в BYTE массив, потом сброшены на диск как бинарные данные

3. .zip - способ 2 + программное сжатие

лог обработки этапов создания, записи и чтения без сжатия и со сжатием:

после каждого чтения данных из файлов, проводится сверка с исходными данными на корректность, ошибок не обнаружено ))
 
"поплыла" библиотека с новым билдом 1816 (( видимо убрали баг в union и теперь ругается на использование в union объекта структуры с конструктором
 
Konstantin:
"поплыла" библиотека с новым билдом 1816 (( видимо убрали баг в union и теперь ругается на использование в union объекта структуры с конструктором

Рекомендую отказаться от использования конструктора для структур, участвующих в union

Вместо конструкторов, лучше использовать функцию Initialize/Init.

Со своей стороны, мы когда-нибудь добавим возможность использовать структуры с конструкторами в union при условии, что union будет иметь явный/пользовательский конструктор. Таким образом, способ и порядок конструирования будет на совести пользователя/творца.

Но по срокам сказать не можем (Ответ разработчиков)
 
Rashid Umarov:

Рекомендую отказаться от использования конструктора для структур, участвующих в union

Вместо конструкторов, лучше использовать функцию Initialize/Init.

Со своей стороны, мы когда-нибудь добавим возможность использовать структуры с конструкторами в union при условии, что union будет иметь явный/пользовательский конструктор. Таким образом, способ и порядок конструирования будет на совести пользователя/творца.

Но по срокам сказать не можем (Ответ разработчиков)

да смысла нет это менять, я уже разработчику отправил переделанный класс как раз без конструкторов в структурах, просто метод Init добавил для инициализации структур и все, вы главное исправьте проблему с сертификатами под Linux, а то как то недоделано получается ))

 
Исправления в заголовочном файле библиотеки.
Файлы:
ZipHeader.mqh  13 kb
 
Rashid Umarov:

Рекомендую отказаться от использования конструктора для структур, участвующих в union

Вместо конструкторов, лучше использовать функцию Initialize/Init.

Со своей стороны, мы когда-нибудь добавим возможность использовать структуры с конструкторами в union при условии, что union будет иметь явный/пользовательский конструктор. Таким образом, способ и порядок конструирования будет на совести пользователя/творца.

Но по срокам сказать не можем (Ответ разработчиков)

Вы по-моему явно не тем занимаетесь. Был явный кастинг структур - потом зачем-то его убрали и решили что "каламбур типов" union это почему-то лучше явного кастинга. Потом конструктор структур начал чем-то мешать в union. Запретили и его. Сейчас планируете его снова разрешить... Однако от ваших действий многие коды в CodeBase сейчас не компилируются. А вот никаких проблем эти нововведения не решают.  

 
Исходные коды CZip исправлены для совместимости с новыми версиями компилятора. Обновления будут доступны после проверки модератором.