Einzelnen Beitrag anzeigen

rdeutsch

Registriert seit: 24. Mär 2006
77 Beiträge
 
Delphi 12 Athens
 
#5

AW: GZip-Stringinhalt extrahieren

  Alt 31. Okt 2024, 15:46
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;

Geändert von rdeutsch (31. Okt 2024 um 16:10 Uhr)
  Mit Zitat antworten Zitat