Also: wie gammatester und ich eindeutig festgestellt haben, handelt es sich bei den von mir ausgelesenen Daten um valide gzip-Konstrukte, lediglich mit einem zusätzlichen Header vor dem gzip-Header '0x1F8B08'. Schneidet man diesen ab und speichert den verbleibenden String in einer Datei mit Endung ".gz", so kann man diese z.B. mittels 7zip entpacken.
Allerdings habe ich es immernoch nicht hingekriegt, den resultierenden gzip-String in meiner Anwendung mittels
ZLib zu entpacken.
Der von himitsu gepostete Algorithmus
Delphi-Quellcode:
Uses ZLib;
Function CompressString(Input:
String):
String;
Var Buffer: Pointer;
BufSize: Integer;
Begin
Buffer :=
nil;
Try
CompressBuf(Input[1], Length(Input), Buffer, BufSize);
SetLength(Result, BufSize);
Move(Buffer^, Result[1], BufSize);
Finally
If Buffer <>
nil Then FreeMem(Buffer);
End;
End;
Function DeCompressString(Input:
String):
String;
Var Buffer: Pointer;
BufSize: Integer;
Begin
Buffer :=
nil;
Try
DeCompressBuf(Input[1], Length(Input), 0, Buffer, BufSize);
SetLength(Result, BufSize);
Move(Buffer^, Result[1], BufSize);
Finally
If Buffer <>
nil Then FreeMem(Buffer);
End;
End;
liefert mir bei DeCompressBuf immer eine ungültige Zeigeroperation. Was mache ich nur falsch???
Anbei noch die "richtigen" gzip-Dateien, vielleicht kann einer von euch nochmal sein Glück versuchen?!?
PS: Die resultierenden Daten sind reine Testdaten einer fiktiven Person, falls sich jemand Sorgen bezüglich des Datenschutz machen sollte
.