clusters Geschrieben 24. November 2010 Geschrieben 24. November 2010 Hallo, ich habe mir eine Library gezogen, mit deren hilfe ich .zip-Dateien entpacken kann. (Library auch zum packen geeignet) Hier hab ich die Library her: Zip Utils - clean, elegant, simple, C++/win32 Nach einbinden der "unzip.cpp", includieren von "unzip.h" und einbringen des folgenden Codeschnippsels an meiner gewünschten Stelle (einem TImage-Objekt, welches als Button dient) funktioniert das entpacken auch tadellos. HZIP hz = OpenZip("c:\\stuff.zip",0); ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index; for (int i=0; i<numitems; i++) { GetZipItem(hz,i,&ze); UnzipItem(hz,i,ze.name); } CloseZip(hz); Nun zu meinem Problem: Wenn ich einen Ordner innerhalb der .zip habe, dann wird dieser nicht mit entpackt. Was muss ich tun, damit dies geschieht? Ich hoffe, das waren ausreichende Hintergrund Informationen Bei Fragen, bitte fragen! Viele liebe Grüße Julia Zitieren
Guybrush Threepwood Geschrieben 24. November 2010 Geschrieben 24. November 2010 Wird der Ordner denn erkannt bzw von GetZipItem zurückgeliefert? Zitieren
clusters Geschrieben 24. November 2010 Autor Geschrieben 24. November 2010 nein, keine fehlermeldung und gar nichts. wenn ich im debugmodus bin und einen breakpoint gesetzt habe, dann heißt es, dass die variable "ze.index" auf 0 ist, was bedeutet, dass "numitems" auf 0 ist und dann wird ja die for-schleife zum entpacken nicht ausgeführt: for (int i=0; i<numitems; i++) { GetZipItem(hz,i,&ze); UnzipItem(hz,i,ze.name); } Zitieren
Guybrush Threepwood Geschrieben 24. November 2010 Geschrieben 24. November 2010 Was ist denn in dem Zip File alles drin? Nur ein Ordner oder auch noch Dateien? Vielleicht kann das ja nicht mit Ordnern umgehen Zitieren
clusters Geschrieben 24. November 2010 Autor Geschrieben 24. November 2010 ein bis zwei Ordner: in dem einem sind Bilder in dem anderem Sounds + eine Textdatei und danke sehr, für deine raschen antworten Zitieren
clusters Geschrieben 24. November 2010 Autor Geschrieben 24. November 2010 ach mist, ich hatte die variablen "ze.index" und "numitems" global deklariert und "numitems" auch gleich den globalen index zugewiesen.. also index ist im globalen auf 0, numitems = index, also numitems auch gleich 0, kein wunder, dass da nix passiert...so ein blöder fehler... Doch jetzt is da noch ein kleines weiteres Problem: Ich möchte ja keine .zip direkt zuweisen, der Benutzer soll sich eine Auswählen, mein Code: AnsiString path; OpenDialog->Filter = "Zip-Dateien|*.zip"; OpenDialog->Execute(); path = OpenDialog->Files->Text; path = path.Delete(path.Length()-1,2); HZIP hz = OpenZip(path,0); In der letzten Zeile kommt dann eine Fehlermeldung: E2285 Keine Übereinstimmung für 'OpenZip(AnsiString,int)' gefunden Zitieren
Guybrush Threepwood Geschrieben 25. November 2010 Geschrieben 25. November 2010 Du musst den AnsiString in ein normalen C-String bzw. ein Char Array umwandeln, wie das geht kann ich dir aber aus dem Kopf nicht sagen. Wahrscheinlich gibts direkt an dem AnsiString Objekt eine Funktion dafür... Zitieren
clusters Geschrieben 25. November 2010 Autor Geschrieben 25. November 2010 Ich hab mal geguckt, jepp gibt's ne Methode für: .c_str() <- Bildet einen Null-Terminierten String Also in meinem Fall: path.c_str(); Ich danke dir sehr für deine Mühen^^ Hast mir sehr geholfen und nochmal entschuldige für meine kleine "Dummheit" Liebe Grüße Julia Zitieren
clusters Geschrieben 25. November 2010 Autor Geschrieben 25. November 2010 Ich wollte noch eine kleine "erweiterung" einbringen, sodass ich den erscheinenden Ort der entpackten Dateien festlegen kann. Das soll so aussehen: Ich habe einen Ordner erstellt, in den die Dateien geladen werden sollen. Momentan werden die Dateien an dem Ort der .zip entpackt Den Pfadnamen des "neu" erstellten Ordners möchte ich dann einfach mit angeben. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.