Kirk_guitar Aprendiz

Registrado: Sábado, 24 de Junho de 2006 Mensagens: 105 Localização: Belo Horizonte
|
Enviada: Ter Nov 07, 2017 5:26 pm Assunto: Erro no TDecompressionStream.Read |
|
|
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 ? |
|