AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

gzip und zip entpacken

Ein Thema von itashadow · begonnen am 21. Aug 2008 · letzter Beitrag vom 26. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#1

gzip und zip entpacken

  Alt 21. Aug 2008, 08:15
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:
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;
aufruf davon:
Decompress('d:\test.txt.gz','d:\test.txt'); 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:

Zitat:
Ungültige Stream-Operation
raus. warum genau ist mir leider nicht klar

hab auch das von Phistev dort gepostete beispiel mit der idzlibex probiert...
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:
[DCC Fehler] IdZlibEx.pas(453): E1026 Datei nicht gefunden: 'deflate.obj'
[DCC Fehler] IdZlibEx.pas(454): E1026 Datei nicht gefunden: 'inflate.obj'
[DCC Fehler] IdZlibEx.pas(455): E1026 Datei nicht gefunden: 'inftrees.obj'
[DCC Fehler] IdZlibEx.pas(456): E1026 Datei nicht gefunden: 'infback.obj'
[DCC Fehler] IdZlibEx.pas(457): E1026 Datei nicht gefunden: 'inffast.obj'
[DCC Fehler] IdZlibEx.pas(458): E1026 Datei nicht gefunden: 'trees.obj'
[DCC Fehler] IdZlibEx.pas(459): E1026 Datei nicht gefunden: 'compress.obj'
[DCC Fehler] IdZlibEx.pas(460): E1026 Datei nicht gefunden: 'adler32.obj'
[DCC Fehler] IdZlibEx.pas(461): E1026 Datei nicht gefunden: 'crc32.obj'
[DCC Fehler] IdZlibEx.pas(336): E2065 Ungenügende Forward- oder External-Deklaration: 'deflateInit_'
[DCC Fehler] IdZlibEx.pas(339): E2065 Ungenügende Forward- oder External-Deklaration: 'deflateInit2_'
[DCC Fehler] IdZlibEx.pas(341): E2065 Ungenügende Forward- oder External-Deklaration: 'deflate'
[DCC Fehler] IdZlibEx.pas(343): E2065 Ungenügende Forward- oder External-Deklaration: 'deflateEnd'
[DCC Fehler] IdZlibEx.pas(348): E2065 Ungenügende Forward- oder External-Deklaration: 'inflateInit_'
[DCC Fehler] IdZlibEx.pas(351): E2065 Ungenügende Forward- oder External-Deklaration: 'inflateInit2_'
[DCC Fehler] IdZlibEx.pas(353): E2065 Ungenügende Forward- oder External-Deklaration: 'inflate'
[DCC Fehler] IdZlibEx.pas(355): E2065 Ungenügende Forward- oder External-Deklaration: 'inflateEnd'
[DCC Fehler] IdZlibEx.pas(357): E2065 Ungenügende Forward- oder External-Deklaration: 'inflateReset'
hab echt keine ahnung wie ich weiter machen soll

hat vielleicht jemand einen hinweis oder ein beispiel??
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: gzip und zip entpacken

  Alt 21. Aug 2008, 08:51
Hast du einen komprimierten Datenstream oder doch nur ein ZIP/GZIP-Archiv das mit WindZip& Co geöffnet werden könnte?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#3

Re: gzip und zip entpacken

  Alt 21. Aug 2008, 08:53
nur das Archiv
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#4

Re: gzip und zip entpacken

  Alt 22. Aug 2008, 11:31
hat den keienr einen tip?
  Mit Zitat antworten Zitat
HeinzJ

Registriert seit: 17. Aug 2007
Ort: Bremen
84 Beiträge
 
Delphi 2007 Architect
 
#5

Re: gzip und zip entpacken

  Alt 22. Aug 2008, 12:08
füge das verzeichnis, wo die '*.obj' dateien liegen, zu deinem projekt hinzu.
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#6

Re: gzip und zip entpacken

  Alt 22. Aug 2008, 12:47
juhu danke
das klappt nu schonmal.

allerdings bekomm ich dann bei der methode mit idzlibex
Delphi-Quellcode:
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;
folgende zugriffsverletzung:

'data error'


wobei ich die streams so bestücke:

FS1:= TFileStream.Create('d:\test.txt.gz', fmOpenRead); wo ist der fehler?
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#7

Re: gzip und zip entpacken

  Alt 25. Aug 2008, 09:51
komm irgendwie nicht weiter
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#8

Re: gzip und zip entpacken

  Alt 25. Aug 2008, 11:52
Zitat von itashadow:
komm irgendwie nicht weiter:(
Zwei kurze Hinweise:

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 zlib 1.14-Implementation (basiert auf der nicht mehr gepflegten paszlib). Benutzbar wie folgt:

Delphi-Quellcode:
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.
Zu 2: Da gibts eigentlich viel Quellcode und Komponenten, im original C-Archive und meinem Port geht das mit dem Mini-Unzip-Programm MiniUnz.

Gruß Gammatester
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#9

Re: gzip und zip entpacken

  Alt 25. Aug 2008, 14:06
hey danke schonmal

aber da hab ich leider ein kleines problem...

bei gzopen gibts leider ne exception...

in der gzio fliegt er in zeile
396 raus

err := inflateInit2_(stream, -DEF_WBITS, ZLIB_VERSION, sizeof(z_stream)); bzw wenn ich ihn weiter verfolge dann ist es genau die zeile 431 der zutil

Delphi-Quellcode:
procedure Trace(const x: string);
begin
  write(x);
end;
( X hat zu der zeit den wert:
Zitat:
inflate: blocks allocated

meldung ist:
Zitat:
E/A-Fehler 105.
woran liegt das?
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#10

Re: gzip und zip entpacken

  Alt 25. Aug 2008, 14:54
Zitat von itashadow:
hey danke schonmal

aber da hab ich leider ein kleines problem...

bei gzopen gibts leider ne exception...

in der gzio fliegt er in zeile
396 raus

err := inflateInit2_(stream, -DEF_WBITS, ZLIB_VERSION, sizeof(z_stream)); bzw wenn ich ihn weiter verfolge dann ist es genau die zeile 431 der zutil

Delphi-Quellcode:
procedure Trace(const x: string);
begin
  write(x);
end;
( X hat zu der zeit den wert:
Zitat:
inflate: blocks allocated

meldung ist:
Zitat:
E/A-Fehler 105.
woran liegt das?
Das ist die Debug-Ausgabe. Wahrscheinlich kompilierst Du kein Konsolprogramm und die Ausgabe erfolgt auf eine nicht geöffnet Konsole. Du hast wohl in den Projektoptionen Debug definiert, wenn Du das nicht machst, sollte der Fehler verschwinden [oder Du hast eine Bug entdeckt )]. Wenn Du die GUI- Debugausgabe brauchst, müßte man in trace auf OutputDebugString(pchar(x)) umsteigen (und uses windows).

Gruß Gammatester
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz