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

 

Artículo publicado Trabajamos con archivos ZIP con los medios de MQL5, sin usar bibliotecas ajenas:

El lenguaje MQL5 prosigue su desarrollo, continuamente se le añaden nuevas funciones para trabajar con datos. Desde hace cierto tiempo, gracias a las innovaciones, resulta posible trabajar con archivos ZIP con las herramientas estándar MQL5, sin tener que implicar bibliotecas DLL ajenas. Este artículo describe de forma detallada cómo hacerlo, usando como ejemplo la descripción de la clase CZip, un instruemnto universal de lectura, creación y modificación de archivos ZIP.

Cierta vez, al autor de este artículo le llamó la atención un peculiaridad interesante de la función CryptDecode, que era precisamente la posibilidad de descomprimir la matriz ZIP trasmitida a ella. Este modificador fue introducido por los desarrolladores de la plataforma comercial MetaTrader 5 para que fuese posible descomprimir la respuesta de ciertos servidores, usando la función estándar WebRequest. Sin embargo, debido a ciertas peculiaridades del formato ZIP, no resultaba posible usarla directamente.

Era necesaria una autenticación adicional: para descomprimir un archivo, resultaba necesario saber su suma hash antes de la compresión: Adler-32, que, como era natural, no existía. Sin embargo, al discutir este problema, los desarrolladores simplificaron el asunto y cargaron de nuevo CryptDecode y CryptEncode, su gemelo opuesto, con una bandera especial que ignoraba el hash Adler32 al descomprimir los datos transmitidos. Para los usuarios inexpertos en el plano técnico, esta novedad se puede explicar de forma sencilla: gracias a ella es posible un trabajo funcionalmente pleno con los archivos ZIP. El artículo describe detalladamente el formato del archivo ZIP, las peculiaridades de guardado en el mismo, y propone para el trabajo con el archivo una cómoda clase CZip orientada a objetos.

Cada archivo ZIP es un fichero binario que contiene una secuencia ordenada de bytes. Por otra parte, en el archivo ZIP cada fichero tiene nombre, atributos (por ejemplo, la hora de modificación del archivo) y otras propiedades que estamos acostumbrados a ver en el sistema de ficheros de cualquier sistema operativo. Por eso, aparte de datos comprimidos, cada archivo ZIP guarda el nombre del fichero comprimido, sus atributos y otra información accesoria. Esta información accesoria se ubica en un orden muy estricto y tiene una estructura regular. Por ejemplo, si en el archivo se contienen dos ficheros (File#1 y File#2), entonces el archivo tendrá el siguiente aspecto:


Fig. 1. Representación esquemática de un archivo ZIP que contiene dos ficheros: File#1 y File#2

Autor: Vasiliy Sokolov

Razón de la queja: