Entwickler-Ecke
Dateizugriff - Zip- Dateien entpacken
SiRoX - Di 17.11.09 15:18
Titel: Zip- Dateien entpacken
Hallo Freunde des Delphi- Codes! :D
Für die Erstellung eines Update- Programmes, versuche ich Dateien, die mir von extern gepackt in ZIP- Dateien zugeschickt werden mit Delphi zu entpacken. Nach Internetrecherchen bin ich auf die Zlib- Funktion von Delphi gekommen. Das funktioniert auch soweit nach dem vorgegebenem Code, jedoch nur mit Dateien, die ich auch vorher mit Delphi gepackt habe.
Was muss ich tun, um die Dateien, die mit einem beliebigen Packprogramm erstellt worden sein können, zu entpacken?
Hier mein bisheriger Code: (Mit dem es eine Fehlermeldung gibt.)
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: 25: 26: 27: 28: 29:
| var InputStream, OutputStream: TFileStream; DeCompressionStream: ZLib.TDeCompressionStream; Buf: array[0..4095] of Byte; Count: Integer; begin InputStream:=TFileStream.Create('d:\test.zip', fmOpenRead); try OutputStream:=TFileStream.Create('d:\test_unzip.txt', fmCreate); try DecompressionStream := TDecompressionStream.Create(InputStream); try while true do begin Count := DecompressionStream.Read(Buf[0], SizeOf(Buf)); if Count = 0 then break else OutputStream.Write(Buf[0], Count); end; finally DecompressionStream.Free; end; finally OutputStream.Free; end; finally InputStream.Free; end; end; |
Ich würde mich sehr über Tipps und Anregungen freuen!
Bitte bedenkt in den Antworten, dass ich Delphi- Anfänger bin ;)
PS:
In weiteren Schritten sollen diese Dateien dann alte Dateien überschreiben, welche aber vorher gesichert werden müssten und ggf. zurückgespielt werden. Dazu aber später ggf. mehr :)
Nersgatt - Di 17.11.09 15:21
SiRoX hat folgendes geschrieben : |
Hier mein bisheriger Code: (Mit dem es eine Fehlermeldung gibt.) |
Gaaanz wichtig bei solchen Fragen im Forum: Welche Fehlermeldung (genauer Text) kommt an welcher Stelle (Codezeile). Du stellt ja auch nicht Dein Auto in die Werkstatt und sagst dem Meister "irgendwas tut nicht" und verschwindest, oder? :D
Gruß,
Jens
SiRoX - Di 17.11.09 15:38
Ja, das leuchtet ein... :)
Ok, also mein Programm erstellt zwar schon die test_unzip.txt, die ist aber ohne Inhalt.
Die Fehlermeldung sagt folgendes:
"Im Projekt XY ist eine Exception der Klasse EZdecompressionError mit der Meldung 'Data Error' aufgetreten"
Xentar - Di 17.11.09 17:07
ZLib packt einen Datenstrom, keine zip Dateien.
Echte Zip Dateien haben noch mehr Daten, als nur die gepackte Datei, z.B. einen Header wo die Dateinamen drinstehen (notwendig, weil man ja auch mehrere Dateien in ein ZIP packen kann) - damit kommt zlib nicht klar.
Glaub das Format, was zlib kann, hat eine andere Endung. War das .gz ? Weiß ich nicht mehr.
Fakt ist: Wenn du "echte" zip Dateien entpacken willst, brauchst du eine entsprechende Komponente. Forensuche sollte hier weiterhelfen.
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!