![]() |
gzip und zip entpacken
Hi
also vorab ich habe delphi 2007 und ich bekomme per mail dateien rein die ab und zu in gzip und zip gepackt sind. das problem ist das ich Programmintern an die darin enthaltene txt datei muss. hab schon hier im forum gesucht doch die möglichkeiten die infrage kommen funktionieren leider nicht... bsp.
Delphi-Quellcode:
aufruf davon:
procedure Tziptest.Decompress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream; DeCompressionStream: ZLib.TDeCompressionStream; begin InputStream:=TFileStream.Create(InputFileName, fmOpenRead); try OutputStream:=TFileStream.Create(OutputFileName, fmCreate); try DecompressionStream:=TDecompressionStream.Create(OutputStream); try DecompressionStream.CopyFrom(InputStream, InputStream.Size); finally DecompressionStream.Free; end; finally OutputStream.Free; end; finally InputStream.Free; end; end;
Delphi-Quellcode:
der decompress code läuft zwar komplett durch allerdings wenn er wieder da weiter machen soll wo ich decompress aufgerufen habe fliegt er mit der exception:
Decompress('d:\test.txt.gz','d:\test.txt');
Zitat:
hab auch das von Phistev ![]() allerdings bekomm ich dann die meldung das idzlibex.dcu nicht vorhanden ist. kopier ich dann die idzlibex.pas in meinen programm ornder das eine dcu erstellt wird bekomm ich folgende fehler: Zitat:
hat vielleicht jemand einen hinweis oder ein beispiel?? |
Re: gzip und zip entpacken
Hast du einen komprimierten Datenstream oder doch nur ein ZIP/GZIP-Archiv das mit WindZip& Co geöffnet werden könnte?
|
Re: gzip und zip entpacken
nur das Archiv
|
Re: gzip und zip entpacken
hat den keienr einen tip?:(
|
Re: gzip und zip entpacken
füge das verzeichnis, wo die '*.obj' dateien liegen, zu deinem projekt hinzu.
|
Re: gzip und zip entpacken
juhu danke:)
das klappt nu schonmal. allerdings bekomm ich dann bei der methode mit idzlibex
Delphi-Quellcode:
folgende zugriffsverletzung:
function tziptest.GZipStreamToString(const input: TStream): string;
var temp: TMemorystream; begin input.Seek(0, soFromBeginning); temp:= TMemorystream.Create; ZDecompressStream(input, temp); //<-- da kommt der fehler... SetLength(result, temp.Size); temp.Read(result[1], temp.Size); end; 'data error' wobei ich die streams so bestücke:
Delphi-Quellcode:
wo ist der fehler? :(
FS1:= TFileStream.Create('d:\test.txt.gz', fmOpenRead);
|
Re: gzip und zip entpacken
komm irgendwie nicht weiter:(
|
Re: gzip und zip entpacken
Zitat:
1) .gz-Datei solltest Du einfach lesen können. 2) .zip-Dateien nicht ohne einigen Aufwand. Zu 1: Bei zlib gibt es die Datei gzio.c, die direktes arbeiten mit .gz-Dateien implementiert. Kann zZ nicht sagen, ob bei den Delphi-Distributionen sowas dabei ist (glaube eher nicht). Eine gzio.pas findest Du in meiner ![]() ![]()
Delphi-Quellcode:
Zu 2: Da gibts eigentlich viel Quellcode und Komponenten, im original C-Archive und meinem Port geht das mit dem Mini-Unzip-Programm MiniUnz.
uses
zlibh,gzio; var f: gzfile; c: int; begin f := gzopen(filename, 'r'); while not gzeof(f) do begin c := gzgetc(f); if c>0 then write(char(c)); end; end. Gruß Gammatester |
Re: gzip und zip entpacken
hey danke schonmal :-D
aber da hab ich leider ein kleines problem... bei gzopen gibts leider ne exception... in der gzio fliegt er in zeile 396 raus
Delphi-Quellcode:
bzw wenn ich ihn weiter verfolge dann ist es genau die zeile 431 der zutil
err := inflateInit2_(stream, -DEF_WBITS, ZLIB_VERSION, sizeof(z_stream));
Delphi-Quellcode:
( X hat zu der zeit den wert:
procedure Trace(const x: string);
begin write(x); end; Zitat:
meldung ist: Zitat:
|
Re: gzip und zip entpacken
Zitat:
Gruß Gammatester |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz