Puis-je créer un dossier comprimé de Windows XP (zippé) à l'aide de Delphi? p>
9 Réponses :
Selon un fil dans Eggheadcafe , vous pouvez utiliser < Un href = "http://msdn.microsoft.com/en-us/library/aa363858%28vs.85%29.aspx" rel = "Nofollow Noreferrer"> Fonction Creeefile avec Pour la route Extensions Shell, jetez un coup d'œil à Utilisation du dossier compressé Windows XP " "Extension de Shell pour fonctionner avec des fichiers .zip par NAMESPace EDANMO, qui est écrit en VB. P>
Je viens de trouver la question similaire posée sur C ++. Jetez un coup d'œil à Création d'un fichier zip sous Windows (XP / 2003 ) en C / C ++ . J'ai le sentiment que l'itinéraire la plus facile achète ZIPFORGE. Voir ZIP Un fichier dans le code DELPHI échantillon . P> File_flag_Backup_Semantics Code> Pour créer un dossier compressé. P>
Vous pouvez utiliser une version de ligne de commande de tout compresseur comme 7zip et faire le Tâche à l'aide de Shellexecute, ou vous pouvez utiliser un composant gratuit ou commercial comme quiconque de ces < / a>. p>
J'avais utilisé zipmaster et cela se comporte très bien à mon objectif. Je ne sais pas quels sont vos besoins de taille, d'espace et de performance. P>
Je l'utilise actuellement aussi, convient à mes besoins.
Il y a quelque temps, j'ai essayé toutes les bibliothèques de compression DELPHI que je pouvais trouver et, éventuellement, j'ai fini par utiliser Kazip par Kiril Antonov .
Mes exigences étaient : p>
Je l'utilise principalement pour activer des fichiers .kml en .kmz, et cela le fait incroyablement rapide. P>
Voici un exemple de comment je l'utilise: P>
uses KaZip; ... // replaces a .kml file with a .kmz file procedure KmlToKmz(const aFileName: string); var FS: TFileStream; KaZip:TKaZip; KmzFileName:TFileName; begin KmzFileName := ChangeFileExt(aFileName, '.kmz'); KaZip := TKaZip.Create(nil); try // create an empty zipfile with .kmz extension: FS := TFileStream.Create(KmzFileName, fmOpenReadWrite or FmCreate); try KaZip.CreateZip(FS); finally FS.Free; end; KaZip.Open(KmzFileName); // Open the new .kmz zipfile KaZip.Entries.AddFile(aFileName); // add the .kml KaZip.Close; DeleteFile(aFileName); // delete the .kml finally KaZip.Free; end; end;
à quel objet est-il final "libre"? Je suppose que Kazip, mais je n'ai pas le représentant à éditer.
Ah, oui kazip devrait être libéré .. corrigé. J'ai nettoyé ce code dans l'éditeur de texte de cette page pour le rendre un peu plus facile à lire .. Je suppose que j'aurais dû vérifier si cela fonctionne toujours :)
Un dossier "zippé" dans Windows n'est rien de plus qu'un fichier .zip compressé à l'aide de n'importe quelle bibliothèque ZIP standard. Les dossiers compressés sont un animal différent et nécessitent un format de disque NTFS. P>
pour le fichier "zip", je suggère fortement le Turbo Power AbRevia , qui est ouverte source et fonctionne bien. Vous voudrez peut-être vérifier cette Alternate Site Si vous utilisez Delphi 2009, car il s'agissait d'une copie plus récente . p>
Si vous souhaitez utiliser l'option Dossiers compressée, vous devez modifier les indicateurs d'annuaire de la poignée de répertoire. Cela n'aura qu'un impact sur les nouveaux fichiers ajoutés à ce répertoire et ne compressera pas automatiquement les fichiers existants. Si vous avez un répertoire existant, vous essayez de compresser, puis renommez chaque fichier existant, puis chargez-le et enregistrez-le sur le nom d'origine Suppression du fichier d'origine lorsque vous remplissez chacun. Yozey a eu un bon lien vers le Documentation MSDN . N'oubliez pas que cela ne fonctionne que avec les disques formatés NTFS, vous devrez donc ajouter un chèque pour cela dans votre code. P>
Jetez un oeil à ce Unité Synzip OpenSource . Il est encore plus rapide de la décompression que l'unité par défaut expédiée avec Delphi et générera un EXE plus petit (les tables CRC sont créées au démarrage). P>
Aucune DLL externe n'est nécessaire. Travaille de Delphi 6 jusqu'à XE. Pas de problème avec la version Unicode de Delphi. Tout dans une seule unité. P>
Je viens de faire des modifications pour gérer les noms de fichiers Unicode à l'intérieur du contenu zip, non seulement Win-ansi Charset, mais également des caractères unicodes. Les commentaires sont les bienvenus. P>
Pouvez-vous donner un exemple pour utiliser synzip code>? de exemple Comment connecter un dossier?
Si vous utilisez DELPHI X2, utilisez simplement Tzipfile à partir de System.Zip:
Po Dossier, utilisez: P>
Zip := TZipFile.Create; try Zip.Open('ZipFile.zip', zmWrite); Zip.Add('FileToBeZipped.txt'); Zip.Add('ThisWillBeCompressedAgainForSureAndBecomeSmaller.zip'); finally Zip.Free; end
Utilisation de cela pour zip un dossier, mais continuez à obtenir "le processus ne peut pas accéder au fichier car il est utilisé par un autre processus. Je ne sais pas comment il est accessible? Je libère la liste que j'avais avec tous les iamges dans le dossier. Gratuit le fichier ini i a été réparé aussi. Toute façon de voir ce qui y est accès? Ou tout moyen de fermer ce qui l'accède ..? Merci
@Glenmorse après 3 ans, j'ai lu cet anser. La première fonction ne fonctionne probablement pas. Cela génère le zip mais uniquement avec le premier fichier, peut-être que cette fonction se bloque elle-même. Utilisez la deuxième fois, cela fonctionne bien.
La première version fonctionne. Vous avez juste besoin de sortir de votre façon. essayez quelque chose comme zipfile.zip annuaire contenu ('.. \ zipfile.zip', 'c: \ zip \ this \ droite \ maintenant');
En utilisant Delphi 10.3, compressez un dossier lorsque je ferme mon application, il se bloque. Il ne craignait pas avant d'ajouter cela. Notez que je le fais aussi à partir d'un fil. Je reçois un fichier zip à la fin et le code passe avec succès. Juste, quand je termine l'application, il reste coincé à l'arrière-plan ...
La méthode Tzipfile.ZipDirectoryContoires n'a pas fonctionné pour moi, j'ai donc créé ma propre implémentation en utilisant tzipfile.add (). Je pose ici ici si quelqu'un en a besoin.
Quelle "propriété zip" fais-vous référence? Pouvez-vous être un peu plus précis?
Des questions similaires aux réponses pertinentes: Comment comment -do-i-compress-multi-fichiers-multi-fichiers-en-a-archive-with-delphi Utilisation-7zip-de-Delphi
Avance rapide 2 ans à 2011: Delphi Xe2 est maintenant expédié avec une classe Tzipfile intégrée à la RTL (voir System.zip). Peut-être que quelqu'un qui a réellement utilisé cela pourrait poster une réponse à ce sujet ici.