Ich möchte gern eine gzip-komprimierte Datei mithilfe der XE2-Bordmittel (
Unit "System.ZLib") dekomprimieren. Leider funktioniert das nicht, ich erhalte immer einen "data error" beim Aufruf von "ZDecompressStr" und weiß nicht, was ich falsch mache. Die gz-Datei ist definitiv in Ordnung, ich kann sie problemlos mittels 7zip dekomprimieren. Hier der Code, den ich verwende sowie im Anhang das komplette Testprojekt. Vielleicht kann es ja mal jemand testen und sagen, was ich falsch mache. Mit "ZDecompress" und "ZDecompressStream" klappt es genauso wenig.
Delphi-Quellcode:
uses
System.ZLib;
procedure TForm1.LoadButtonClick(Sender: TObject);
var
InStream: TMemoryStream;
CompressedFile: TBytes;
UncompressedFile: string;
begin
if OpenDialog1.Execute then
begin
InStream := TMemoryStream.Create;
try
InStream.LoadFromFile(OpenDialog1.FileName);
InStream.Position := 0;
SetLength(CompressedFile, InStream.Size);
InStream.Read(CompressedFile[0], InStream.Size);
UncompressedFile := ZDecompressStr(CompressedFile);
UncompressedMemo.Text := UncompressedFile;
finally
InStream.Free;
end;
end;
end;