Discusión sobre el artículo "Trabajamos con archivos ZIP con los medios de MQL5, sin usar bibliotecas ajenas" - página 7

 

Cómo utilizar esta biblioteca para realizar la tarea de copia de seguridad de archivos:

Es necesario crear un archivo en el que se puede poner en carpetas

\MQL5\Expertos\

\MQL5/Indicadores\

\MQL5/Include.

etc. ?

 
Alexandr Gavrilin #:

Cómo implementar dicha tarea de copia de seguridad de archivos utilizando esta biblioteca:

Necesitas crear un archivo en el que puedas dispersar los ficheros en carpetas

\MQL5\Experts\

\MQL5/Indicadores\

\MQL5/Incluir

etc. ?

He aquí un buen ejemplo.

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

Heaquí un buen ejemplo.

Gracias, lo estudiaré. Cansado de las actualizaciones periódicas de los archivos en diferentes archivos a los clientes. Mucho tiempo, necesidad de automatización.

 
fxsaber #:

Heaquí un buen ejemplo.

Gracias, ¡funciona!


Apéndice.

No se puede empaquetar ex5 , ex4 archivos, y tengo que tirar exactamente.

He aquí un script de prueba sobre la base de la propuesta. mq5 lanza sin problemas, si la resolución de menú ex5 entonces todo el error nombre de archivo incorrecto 5002.

//+------------------------------------------------------------------+
//|UpdateShop.mq5
//|Copyright 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;      // Crear archivo zip vacío.

//+------------------------------------------------------------------+
//| Función de inicio del programa de script|
//+------------------------------------------------------------------+
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)
     {
      //crear el catálogo

      /guardar el archivo en un fichero
      const string archive = "MQL5/Files/Test.zip";
      if(Zip.SaveZipToFile(archive))
        {
         Print("Packed file saved: ", archive);
        }
     }
  }
//+----------------------------------------------------------------
Gracias de nuevo a los desarrolladores para la seguridad de trabajar con archivos..... de nuevo otras muletas que hacer.
 

Hola,

Tengo un archivo ZIP con un archivo CSV en él.
¿Cómo leer este archivo en una cadena. (Sin guardar en disco y leer desde disco)

 
Forester #:

Hola,

Tengo un archivo ZIP con un archivo CSV en él.
¿Cómo leer este archivo en una cadena. (Sin guardar en disco y leer desde disco)

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

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

Este es el hilo de discusión del artículo que mencionas. Sólo he visto la posibilidad de subir el ZIP a una carpeta del disco. Pero me gustaría subirlo a una línea a la vez.

 

Si alguien lo necesita, aquí es un script listo para leer el archivo en una línea.

Carpeta ZIP y Dictionary.mqh descargar aquí https://www.mql5.com/en/code/27955 - funcionan.

#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("Seleccionar archivos para descargar"., "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("Se ha producido un error del sistema al descargar el archivo. Número de error: "+(string)last_error);}
      else {  ENUM_ZIP_ERROR error=(ENUM_ZIP_ERROR)(last_error-ERR_USER_ERROR_FIRST); printf("Se ha producido un error al procesar el archivo en el momento de su descarga: "+EnumToString(error));}
      return;
   }
   
   CZipFile* content = Zip.ElementAt(0);//leer el fichero número 0 del archivo
   uchar file_content[];
   content.GetUnpackFile(file_content);// descomprimirlo en la matriz file_content

   string  s = CharArrayToString(file_content,0,-1,CP_UTF8);//CP_ACP
   
   string sa[];
   int k=StringSplit(s,'\n',sa);//--- divide la cadena en subcadenas
   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.
 
En general, sería bueno añadir funciones de archivo al propio terminal. A juzgar por la discusión, los archivos dejan de compilarse con regularidad.
 
¿Alguna novedad al respecto? Me encuentro con errores

ZipLocalHeaderOpen' tiene constructor y no se puede utilizar como miembro de la unión ZipHeader.mqh 52 23