Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

  }


ein bis zwei Ordner: in dem einem sind Bilder in dem anderem Sounds

+ eine Textdatei

und danke sehr, für deine raschen antworten :)

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

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

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.