Entwickler-Ecke
Dateizugriff - GZipped Datei als Stream auslesen
Tilman - Mi 01.12.10 16:59
Titel: GZipped Datei als Stream auslesen
Hi, ich hab Dateien die mit GZip komprimiert sind, und möchte diese als Stream auslesen (zwischenspeichern würde notfalls aber auch gehen, als Stream wärs mir aber lieber). Ich hab bisher versucht mit Abbrevia AbUnzipper zu arbeiten, aber irgendwie klappt das nicht, ich bekomme stets "Unhandled Archive Type". Wenn ich force Type und atGZip benutze, dann gibts zwar keine Fehlermeldung, aber der enthaltene Dateiname wird als "Unknown" zurückgegeben, und der Stream hat eine länge von 0.
Die Dateien haben die Dateiendung .dat
Hat jemand eine Funktionierende Lösung für GZip dekomprimierung, oder ein funktionierendes Beispiel für Abbrevia?
P.S. habe Turbo Delphi.
Schonmal danke fürs lesen ;)
jaenicke - Mi 01.12.10 18:22
Bei Indy muss das dabei sein, denn Indy unterstützt diese Komprimierung bei der Datenübertragung.
TIdCompressorZLibEx oder so ähnlich gibt es. Genauer weiß ich es im Moment nicht, da müsste ich selbst nachschauen.
Tilman - Mi 01.12.10 18:34
Also die Komponente gibts schonmal, werde sie mir anschauen, danke! :zustimm:
Tilman - Do 02.12.10 18:40
Es scheint zu funzen :) Vielen Dank nochmal! Hier ein kleines Stück Beispielcode für zukünftige Tester, wichtig ist dass der Ausgabestream mit Seek zurückgestezt werden muss, sonst bekommt man nur 0en zurück ^^ hatte daran gestern etwas geknabbert, aber gerade eben kam mir der Gedanke, und es hat geklappt =)
idcom = tIDCompressorZLibEx
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| var pfad: string; datei: tFileStream; ausgabe: tMemoryStream; buffer: Byte; n: Integer;
begin pfad := 'c:\irgendwas'; datei := TFileStream.Create(pfad,fmOpenRead); ausgabe := tMemoryStream.Create; idcomp.DecompressDeflateStream(datei,ausgabe); ausgabe.Seek(0,soFromBeginning); writeln(ausgabe.Size); for n := 0 to 500 do begin ausgabe.Read(buffer,1); write(buffer); write(','); end;
ausgabe.Free; datei.Free; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!