Hi Infect,
Zitat von
Infect:
function GZDecompressStr(const s: AnsiString; var fileName,
comment: AnsiString; var dateTime: TDateTime): String; overload;
function GZDecompressStr(const s: AnsiString): String; overload;[/delphi]
sollten ja eigentlich genau dafür gedacht sein, einen string im gzip-Format zu entpacken.
Das ist schonmal verkehrt. Du arbeitest mit Binärdaten, wenn Du die in einen AnsiString packen willst, muß Du bezüglich Codepages und automatischer Konvertierung (aka D2009) aufpassen.
Zitat von
Infect:
Ich bekomme jedoch immer einen "data error", keinen blassen Schimmer, warum das nicht klappt. Ich übergebe die komprimierten Daten ab dem gzip-Header "#$1F#$8B" bis zum Ende der Daten (incl. der ganzen Nullen am Schluss).
Ja, nimm doch mal einen Stream stattdessen. Gerade mit Deinen Rohdaten getestet, geht einwandfrei...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
InStream,
OutStream: TMemoryStream;
begin
InStream := TMemoryStream.Create;
OutStream := TMemoryStream.Create;
try
InStream.LoadFromFile('D:\Downloads\VersichertenDaten.gz');
InStream.Position := 0;
GZDecompressStream(InStream, OutStream);
OutStream.Position := 0;
mmo1.Lines.LoadFromStream(OutStream); // mmo1 ist ein Memo auf dem Testform
finally
OutStream.Free;
InStream.Free;
end;
end;
Das ging jetzt aber in den Bereich "Grundlagen" von Delphi und hat wenig mit gzip zu tun
Gruß Assertor