ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Erro no TDecompressionStream.Read

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Kirk_guitar
Aprendiz
Aprendiz


Registrado: Sábado, 24 de Junho de 2006
Mensagens: 105
Localização: Belo Horizonte

MensagemEnviada: Ter Nov 07, 2017 5:26 pm    Assunto: Erro no TDecompressionStream.Read Responder com Citação

Boa tarde pessoal.
Eu estou tentado usar o zlib para descompactar o conteúdo que retorna do webservice de download de NFe. Eu li que ele retorna no formato GZip. Eu consegui usar a rotina para decodificar a base 64, mas na hora de fazer a descompressão usando o zlip sem da erro nessa linha.
Abaixo segue o código da descompressão:
Código:

function UnZip(xml :AnsiString): AnsiString;
var MS: TMemoryStream;
begin
   xml := DecodeBase64(xml);
   MS := TMemoryStream.Create;
  try
     WriteStrToStream(MS, xml);
     MS.Position := 0;
     Teste(ms);
  finally
     MS.Free;
  end;
end;


E aqui a função Teste:
Código:

procedure Teste(ms :TMemoryStream);
var
    ZStream: TDecompressionStream;
    FileOut: TFileStream;
    Buf: array[0..1023]of Byte;
    i :Integer;
begin
   try
       try
       ZStream:=TDecompressionStream.Create(ms);
       FileOut:=TFileStream.Create('C:\teste.txt', fmCreate or fmShareExclusive);
          repeat
            i:=ZStream.Read(Buf, SizeOf(Buf)); //linha que da o erro.
            if i <> 0 then FileOut.Write(Buf, i);
         until i <= 0;
       except on E :Exception do
         raise Exception.Create(E.Message);
       end;
   finally
      ZStream.Free;
      FileOut.Free;
   end;

end;


Estou usando o Delphi 2007. Já tentei aumentar o tamanho da variável "Buf" mas mesmo assim da erro. E a mensagem de erro só retornar a palavra "Error" e mais nada.
O engraçado é que essa linha não da erro quando testo no Delphi XE2. Eu li que a versão do zlib pode ser o problema. Se for o caso eu consigo atualizar o zlib do Delphi 2007? Como faço isso? o meu projeto está todo no delphi 2007.
Alguém sabe me dizer onde estou errando ?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB