Discussão do artigo "Manipulação de Arquivos ZIP em Linguagem MQL5 Pura"

 

Novo artigo Manipulação de Arquivos ZIP em Linguagem MQL5 Pura foi publicado:

A linguagem MQL5 se mantém em evolução e novos recursos para trabalhar com dados estão constantemente sendo adicionados. Devido as inovações recentes, se tornou possível manipular arquivos ZIP usando ferramentas MQL5 nativas, sem envolver bibliotecas DLL de terceiros. Este artigo foca em como isso é realizado e implementa a classe CZip, que é uma ferramenta universal para ler, criar e modificar arquivos ZIP, como um exemplo.

O formato ZIP foi criado por Phil Katz em 1989 e foi implementado pela primeira vez no programa PKZIP para MS-DOS, lançado pela empresa PKWARE que Katz fundou. Este formato usa com mais freqüência o algoritmo de compactação de dados DEFLATE . Os programas mais comuns que trabalham no Windows com este formato são WinZip e WinRAR.

É importante entender que o formato do arquivo ZIP foi desenvolvido ao longo do tempo e tem várias versões. Para criar uma classe que funcione com um arquivo ZIP, contamos com a especificação do formato oficial da versão 6.3.4, encontrada no site da empresa PKWARE:  https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT. Esta é a especificação de formato mais recente datada de 01 de outubro de 2014, que é extensiva e inclui descrições de inúmeras nuances.

Neste artigo, somos guiados pelo princípio do menor esforço e iremos criar uma ferramenta que utilizará apenas os dados mais necessários para a extração e criação de novos arquivos com sucesso. Isto significa que a operação com arquivos ZIP será limitado até um certo ponto - a compatibilidade dos formatos não é garantida, portanto não existe necessidade de mencionar a completa "onívoria" de arquivos. Existe a possibilidade de alguns arquivos ZIP criados por aplicativos de terceiros não poderem ser extraídos através do instrumento proposto.

Cada arquivo ZIP é um arquivo binário que contém uma seqüência ordenada de bytes. Por outro lado, cada arquivo do ZIP tem um nome, atributos (tais como a data de modificação do arquivo) e outras propriedades, que estamos acostumados a ver em sistemas de arquivos de qualquer sistema operacional . Portanto, além dos dados compactados, cada armazenamento de arquivo ZIP possui o nome de um arquivo comprimido, seus atributos e outras informações do serviço. A informação do serviço é colocada de uma forma muito específica e tem uma estrutura padrão. Por exemplo, se um arquivo contém dois arquivos(File#1 e File#2), então terá o seguinte esquema:

Fig. 1. Representação esquemática de um arquivo ZIP que contém dois arquivos: File#1 e File#2

Autor: Vasiliy Sokolov