Yes, deine Vermutung war richtig. WindowsBits und der Blog von dummzeuch hat mir auf die Sprünge geholfen.
Mit untenstehendem Code klappt die Umwandlung von 'H4sIAAAAAAAAA/NIzMnJVwhJrSgBAM5sM2wKAAAA' nach 'Hallo Text' wunderbar.
Vielen Dank für eure Hilfe.
Code:
function DecompressGzipBase64(Value: string; parUseGZip: boolean): string;
var WindowBits: Integer;
Bytes: TBytes;
BytesStream: TBytesStream;
DecompressionStream: TZDecompressionStream;
OutStream: TMemoryStream;
resText : AnsiString;
begin
result := '';
WindowBits := 15;
if parUseGZip then WindowBits := WindowBits + 16;
// base64-String decodieren und in Bytearray ablegen
Bytes := TNetEncoding.Base64.DecodeStringToBytes(Value);
// Inhalt des Bytearrays extrahieren
DecompressionStream := nil;
BytesStream := TBytesStream.Create(Bytes);
try
OutStream := TMemoryStream.Create();
DecompressionStream := TZDecompressionStream.Create(BytesStream, WindowBits);
DecompressionStream.Position := 0;
OutStream.CopyFrom(DecompressionStream, 0);
OutStream.Position := 0;
SetLength(resText, OutStream.Size);
OutStream.Read(resText[1], OutStream.Size);
finally
BytesStream.Free;
DecompressionStream.Free;
OutStream.Free;
end;
result := resText;
end;