Autor Beitrag
bigmasterdenis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 48



BeitragVerfasst: Mi 31.10.07 19:51 
Hallo Leute!

Bin echt am verzweifeln... Mein Problem ist folgendes:

Ich habe ein Tool gebastelt um Dateien in ein Zip-Archiv zu packen bzw. zu entpacken. Für die Zip-Funktionalität verwende ich die Komponente Kazip.

So, nun ist mir aber ein Zip-Archiv gegeben, welches nicht mit Kazip erstellt wurde. Versuche ich nun mit meinem Tool eine in diesem Archiv vorhandene ASCII-Datei zu ändern, meldet Winrar/Winace, dass das Archiv korrupt geworden ist (CRC-Error). Es ändert sich der CRC32-Wert der ASCII-Datei. Hängt vielleicht damit zusammen...

Weiß zufällig jemand was ich tun kann um das Archiv doch noch zu retten???


Danke für jede Hilfe!!!

Gruß DD
Logikmensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: Do 01.11.07 13:01 
Du hast offenbar zwei Probleme auf einmal:

1. Ich kenne die Komponente KaZip zwar nicht, aber als ich auf die Suche nach einem wirklich sauguten ZIP-Reader ging (mit Hilfe des Forums), fand ich ZipMaster (zusammen mit der DelZip79.dll), das wirklich gut arbeitet und sehr kompatibel ist. Defekte ZIP-Dateien kannste damit eigentlich nicht bekommen, wenn Du die Kompo richtig einbindest.

2. Das andere Problem ist also eine kaputt gegangene ZIP-Datei, die Du retten willst. Kannste die denn nicht nochmal irgendwo herbekommen? Ansonsten poste sie doch hier mal, vielleicht kann sie einer mit einem ZIP-Repair-Tool wieder herstellen...

Ich mein ja nur. ;-)

_________________
Es gibt keine Probleme - nur Lösungen!
bigmasterdenis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 48



BeitragVerfasst: Do 01.11.07 15:02 
ZipMaster wollte ich nicht nehmen, da man dafür noch extra dll's braucht. Da hat mir jemand aus dem Forum Kazip empfohlen. Das habe ich jetzt auch überall in meinem Programm verwendet. Der Aufwand jetzt noch eine andere Zip-Komponente einzubauen wäre viel zu groß... :?

Die Zip-Datei wird von einem Datenbankmanagement-System erzeugt und enthält sofort eine Art Header-Datei, in welche ich reinschreiben muss. Diese Header-Datei liegt direkt in der Zip-Datei, also nicht etwa in einem Unterordner. Es gibt aber auch Dateien, die in Ordnern liegen. Also könnte der Inhalt so einer gegebener Zip-Datei so aussehen:

FolderA
-FileA1
-FileA2
FolderB
-FileB
Header.txt

So, es geht nun darum diese Folder-Inhalte zu manipulieren und die Veränderungen in der Header.txt zu dokumentieren. Ich habe jetzt rausgefunden, dass das Zip-Archiv nur dann kaputt geht, wenn ich in die Header.txt schreibe. Sprich verändere ich Inhalte von Ordnern und schreibe die Änderungen NICHT in die Header.txt, dann läuft alles glatt. Es hat wohl damit zu tun, dass die Header.txt auf oberster Ebene liegt. Ich kann sie aber nicht ebenfalls in einem Ordner unterbringen, da die Zip-Datei sonst nicht von dem DBMS akzeptiert wird.

Hoffe mein Problem ist nun klarer geworden und, dass mir jemand weiterhelfen kann :roll:

Danke und Gruß

DD
Logikmensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: Fr 02.11.07 08:46 
Die Ordner in ZIP-Dateien sind doch nur Pfadangaben. Die Dateien werden doch ansonsten über ihre IDs lokalisiert.
Nun zur Lösungsstrategie:
- alle Dateien nach TEMP entpacken (incl. Ordnerstruktur)
- Header.txt verändern
- alle Dateien wieder in das ZIP-Archiv packen.

(Wenn Du im Win XP einen ZIP-ordner öffnest und eine Datei doppelklickst, dann wird auch eine Kopie im TEMP-Verzeichnis erstellt und diese dann geöffnet).

Also, ich würde nicht direkt in der ZIP-datei selbst rumschreiben, weil Du dann wirklich unpassende CRCs erzeugst. Das ist meiner Ansicht nach keine gute Strategie.

_________________
Es gibt keine Probleme - nur Lösungen!