Bom dia, Vasily! A situação é a seguinte: faço o download de um livro de posições de pedidos da OANDA, eles chegam embalados na API v.2, quando tento descompactá-los usando o CZip, recebo a seguinte mensagem: "Houve um erro de processamento de arquivo no momento de seu carregamento: ZIP_ERROR_BAD_FORMAT_ZIP". Não sei exatamente com o que ele está compactado, mas o WinZip desdobra o arquivo recebido. Os arquivos estão anexados por precaução.
Fiz o download do zip e há vários arquivos no arquivo. Tentei descompactá-los e nada funcionou. Estou examinando o código e me deparo com este fragmento:
//+------------------------------------------------------------------+//|| Descompacte o conteúdo do zip atual e salve-o como um arquivo no disco.//+------------------------------------------------------------------+bool CZipContent::UnpackOnDisk(string folder, int file_common)
{
returnfalse;
}
Alexey Oreshkin: Fiz o download do zip, há vários arquivos no arquivo. Estou tentando descompactar e nada funciona. Olho para o código e chego a este fragmento: Então entendo corretamente que a descompactação não funciona?
Não, não funciona. Observe com atenção, UnpackOnDisk é um método virtual. Ele não tem implementação na classe abstrata Content. Infelizmente, o MQL não permite que você crie métodos virtuais sem implementação, portanto, você precisa colocar impedimentos como o que você encontrou. O trabalho real de salvar um arquivo em disco é feito por CZipFile::UnpackOnDisk e CZipDirectory::UnpackOnDisk. Isso ocorre porque a criação de um diretório e de um arquivo no disco são operações diferentes e, portanto, são realizadas por métodos diferentes.
string cookie,headers;
string mql_url="https://www.mql5.com/pt/code/download/9";
int timeout=5000;
uchar data[],zip_array[];
if(!WebRequest("GET",mql_url,cookie,NULL,timeout,data,0,zip_array,headers))
{
printf("Unable to download ZIP archive from "+mql_url+". Check request and permissions EA.");
return;
}
if(!Zip.CreateFromCharArray(zip_array))
{
printf("Loaded bad ZIP archive. Check results array.");
return;
}
printf("Archive successfully loaded. Total files: "+(string)Zip.TotalElements());
Zip.UnpackZipArchive("Alligator",FILE_COMMON);
Alterei a url (nas configurações do terminal, permiti o acesso) e isso é tudo, o resultado também é zero. Pensei em transferir o analisador do Sharp para cá e acho que não. Tanto esforço para descompactar o arquivo e nada (
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Entendo que a descompactação não funciona?
Eu analiso o código e chego a este fragmento:
ou seja, entendi corretamente que a descompactação não funciona?
Observe o código no modo de depuração e você chegará ao fragmento correto. A descompactação funciona - eu a utilizo todos os dias.
Fiz o download do zip, há vários arquivos no arquivo. Estou tentando descompactar e nada funciona. Olho para o código e chego a este fragmento:
Então entendo corretamente que a descompactação não funciona?
Não, não funciona. Observe com atenção, UnpackOnDisk é um método virtual. Ele não tem implementação na classe abstrata Content. Infelizmente, o MQL não permite que você crie métodos virtuais sem implementação, portanto, você precisa colocar impedimentos como o que você encontrou. O trabalho real de salvar um arquivo em disco é feito por CZipFile::UnpackOnDisk e CZipDirectory::UnpackOnDisk. Isso ocorre porque a criação de um diretório e de um arquivo no disco são operações diferentes e, portanto, são realizadas por métodos diferentes.
Não foi possível anexar o arquivo, se precisar dele, eu o enviarei para seu e-mail.
Esse é, de fato, o aspecto mais importante. Primeiro, verifique se está usando a versão mais recente do CZip e tente descompactar novamente.
Veja o código no modo de depuração e você chegará à parte necessária. A descompactação funciona - eu a utilizo todos os dias.
Então o que estou fazendo de errado. Aqui está o meu código:
Zip.LoadZipFromFile("info.zip",FILE_COMMON); Zip.UnpackZipArchive("",FILE_COMMON);Espero ver tudo descompactado na pasta pública, mas ela está vazia. Não preciso de mais nada. Há o info.zip na pasta pública.
então o que estou fazendo de errado. Aqui está meu código:
Espero ver tudo descompactado na pasta pública, mas ela está vazia. Não preciso de mais nada. Há o info.zip na pasta pública.
Você terá que especificar a pasta, pois as aspas duplas funcionam com erro.
Você terá que especificar uma pasta, pois as aspas duplas funcionam com erro.
Honestamente, nada mudou:
o resultado também é nulo.
p.s. Peguei um exemplo do artigo
Alterei a url (nas configurações do terminal, permiti o acesso) e isso é tudo, o resultado também é zero. Pensei em transferir o analisador do Sharp para cá e acho que não. Tanto esforço para descompactar o arquivo e nada (
Sinceramente, nada mudou:
o resultado também é nulo.