Zum Inhalt springen

Dateien entpacken in einem C++ Programm


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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);

  }


Geschrieben

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

Geschrieben

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

Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...