Sind deine Quelldaten überhaupt Unicodestrings oder doch nur AnsiStrings (komprimierung von D2007 und früher)?
Also wenn euch das mit den Strings jetzt so beschäftigt, dann schmeiß ich den eben komplett raus und arbeite nur mit Streams, kommt aufs gleiche raus (data error):
Delphi-Quellcode:
uses
System.ZLib;
procedure TForm1.LoadButtonClick(Sender: TObject);
var
InStream: TMemoryStream;
OutStream: TMemoryStream;
begin
if OpenDialog1.Execute then
begin
InStream := TMemoryStream.Create;
try
OutStream := TMemoryStream.Create;
try
InStream.LoadFromFile(OpenDialog1.FileName);
InStream.Position := 0;
ZDecompressStream(InStream, OutStream); // data error
finally
OutStream.Free;
end;
finally
InStream.Free;
end;
end;
end;
Besser?
Das mit den Headern muss ich mal ausprobieren, einen ähnlichen verdacht hatte ich auch schon, aber einfach nur die ersten 10 Bytes (gzip-Header) abzutrennen brachte erstmal nichts.