BCB2007 und ZIP



  • was benutzt ihr für den BCB2007 um zip-dateien zu erstellen ?
    Ist da irgend eine 'free' Komponente ?



  • Hallo

    Selber benutzt habe ich es noch nicht, aber zlib ist natürlichg auch auf dem Builder benutztbar

    bis bald
    akari



  • zlib habe ich als erstes probiert, nach vorlage von http://www.bytesandmore.de/rad/cpp/snipp/sc06021.php
    aber irgendwie funktionierte es nicht richtig. In diesem Beispiel kann ich die output.zip nicht mehr öffnen. Fehlermeldung von WinZip.

    TZipObj* pZip = new TZipObj;
    TStringList* pFiles = new TStringList;
    if(pZip != NULL && pFiles != NULL )
    {
      pFiles->Add("c:\\test.txt");
      pZip->CompressFiles(pFiles ,"c:\\output.zip",7, false);
      delete pFiles;
      delete pZip;
    }
    

    bei dieser Variante (mit veizeichnis, true) kann ich zwar die zip Datei öffnen, erhalte aber in ihr einen Ordner Namens 'c:'.

    TZipObj* pZip = new TZipObj;
    TStringList* pFiles = new TStringList;
    if(pZip != NULL && pFiles != NULL )
    {
      pFiles->Add("c:\\test.txt");
      pZip->CompressFiles(pFiles ,"c:\\output.zip",7, true);
      delete pFiles;
      delete pZip;
    }
    

    habe Zlib noch nie benutzt, daher habe ich das Beispiel verwendet, aber es funktioniert so nicht. Ist da evtl. noch was zu beachten ?



  • Hallo. Gibt es die TZipObj Klasse auch bereits mit UnicodeString Unterstüzung?



  • Ich habe jetzt die komplette Klasse in UnicodeString umgesetzt. Jetzt meckert er jedoch über:

    [ILINK32 Fehler] Error: Nicht auflösbares externes '_zipOpen' referenziert von TZIPOBJ.OBJ
    [ILINK32 Fehler] Error: Nicht auflösbares externes '_zipOpenNewFileInZip' referenziert von TZIPOBJ.OBJ
    [ILINK32 Fehler] Error: Nicht auflösbares externes '_zipWriteInFileInZip' referenziert von TZIPOBJ.OBJ
    [ILINK32 Fehler] Error: Nicht auflösbares externes '_zipCloseFileInZip' referenziert von TZIPOBJ.OBJ
    [ILINK32 Fehler] Error: Nicht auflösbares externes '_zipClose' referenziert von TZIPOBJ.OBJ

    Wenn ich alle *.c Dateien aus Zlib in die Projektverwaltung aufnehme, dann compiliert er fehlerfrei, aber wieso muss ich das? Wieso reicht es denn nicht unter Optionen->Include-Pfad den Ordner ZLib anzugeben. in welchem sich die Dateien befinden?! Mich stört es, weil die Projektverwaltung regelrecht "zugemüllt" wird und man die eigenen Projektdateien kaum noch findet.



  • TZip schrieb:

    Ich habe jetzt die komplette Klasse in UnicodeString umgesetzt.

    Das wird so nicht funktionieren. TZipObj übergibt andauernd Strings via AnsiString::c_str() an die zip*-Funktionen; diese erwarten auch char* und nicht wchar_t*. Du könntest AnsiString durch UTF8String ersetzen, dann hast du UTF-8-encodierte Dateinamen.

    TZip schrieb:

    aber wieso muss ich das?

    Weil du die darin enthaltenen Funktionen aufrufst?

    TZip schrieb:

    Wieso reicht es denn nicht unter Optionen->Include-Pfad den Ordner ZLib anzugeben. in welchem sich die Dateien befinden?!

    Weil sie nicht der Präprozessor finden muß, sondern Compiler und Linker.

    TZip schrieb:

    Mich stört es, weil die Projektverwaltung regelrecht "zugemüllt" wird und man die eigenen Projektdateien kaum noch findet.

    Dann benutze entweder virtuelle Ordner (-> Kontextmenu im Projektmanager), oder mache aus TZipObj.cpp/.h und den ZLib-Dateien eine statische Bibliothek.


Anmelden zum Antworten