Discussão do artigo "Manipulação de Arquivos ZIP em Linguagem MQL5 Pura" - página 6

 
Seria bom apresentar a biblioteca ao const. Por exemplo
   ENUM_ZIP_TYPE        ZipType(void) const; 
 
fxsaber:

Sim, o arquivo anexado funciona. Mas o meu não funciona. Isso é estranho.

Arquivos anexados:
info.zip  575 kb
 
Alexey Oreshkin:

Sim, o arquivo anexado funciona. Mas o meu não funciona. Isso é estranho.

#include <Zip\Zip.mqh> // https://www.mql5.com/pt/articles/1971

void OnStart()
{
  CZip Zip;

  if (Zip.LoadZipFromFile("info.zip", 0))
    Zip.UnpackZipArchive("Temp", 0);
  else
    Print(EnumToString((ENUM_ZIP_ERROR)(GetLastError() - ERR_USER_ERROR_FIRST))); // ZIP_ERROR_BAD_FORMAT_ZIP
}

Reempacote-o com outra coisa.

 
fxsaber:

Reempacote-o com outra coisa.

Recebo esse arquivo via webrequest. O Zip o abre normalmente e o Sharp também não tem problemas com ele. O reempacotamento manual não é uma opção. O ponto principal é a automação.
Recebo o arquivo aqui: http://api.bestchange.ru/info.zip.

 
Alexey Oreshkin:

Recebo esse arquivo via webrequest. O Zip o abre normalmente e o Sharp também não tem problemas com ele. O reempacotamento manual não é uma opção. O ponto principal é a automação.
Eu obtenho o arquivo aqui: http://api.bestchange.ru/info.zip.

Também obtenho zips da rede. Mas não tive "sorte" como você. Isso já é com o autor da biblioteca. Duvido que o formato ZIP não tenha sido modificado desde sua criação.

 
fxsaber:

Duvido que o formato ZIP não tenha sido modificado desde sua criação.

Pode ser, embora os autores o atualizem a cada 5 segundos. Também não faz sentido editá-lo manualmente.
Tanto faz. Vou deixar como está, então. É que alguns dos dados são analisados por meio do µl, então pensei em mover tudo para cá. Acho que não é o caso.

 
Alexey Oreshkin:

Recebo esse arquivo via webrequest. O Zip o abre normalmente e o Sharp também não tem problemas com ele. O reempacotamento manual não é uma opção. O ponto principal é a automação.
Recebo o arquivo aqui: http://api.bestchange.ru/info.zip.

Obrigado pela mensagem. Vamos resolver o problema.

Quanto ao formato zip em si, ele pode ser muito diferente, em primeiro lugar, e, em segundo lugar, muitas bibliotecas que empacotam dados em zip tratam seu formato com extrema desconsideração (olá, Microsoft;) Portanto, você tem que dançar em torno do binário com um pandeiro, insinuando o que está dentro dele. Deixe-me lembrá-lo de que o CZip é um projeto aberto e não comercial. Portanto, você não pode esperar que ele seja onívoro alimentando-o com todo tipo de porcaria, portanto, entenda esse fato.

 
Vasiliy Sokolov:

Obrigado pela mensagem. Daremos uma olhada nisso.

Quanto ao formato zip em si, ele pode ser muito diferente, em primeiro lugar, e, em segundo lugar, muitas bibliotecas que empacotam dados em zip tratam seu formato com extrema desconsideração (olá, Microsoft;) Portanto, você tem que dançar ao redor do binário com um pandeiro, dando a entender o que há dentro dele. Deixe-me lembrá-lo de que o CZip é um projeto aberto e não comercial. Portanto, você não pode esperar que ele seja onívoro alimentando-o com todo tipo de porcaria, então, por favor, entenda esse fato.

Vasily, sem reclamações, mas, de qualquer forma, espero que esse problema seja resolvido de forma positiva. :)

 

Vasily, olá!

É necessário converter uma sequência de bytes de um arquivo ZIP obtido por WebRequest em um arquivo ZIP e descompactá-lo em um disco usando as ferramentas MQL5.

Depois de ler seu artigo, percebi que essa pode ser uma solução. No entanto, não consigo aplicar essa solução: ao compilar, o MetaEditor não consegue criar o arquivo executável, alegando erros na biblioteca de classes CZip.

É possível usar métodos separados da classe CZip, em particular CreateFromCharArray() e UnpackZipArchive(), incluindo-os diretamente no código do script, e como fazer isso corretamente?

Desde já, obrigado.

 
Vasiliy Sokolov #:

O notório elenco de estruturas é o palavrão. Mantenha a versão corrigida no anexo.

#include <Zip\Zip.mqh>

z


Vasily, por favor, corrija a biblioteca para o mt5.
Eu peguei a biblioteca do artigo.