begin process at 2012 02 12 05:22:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Modules

 > COMPRESSER/DÉCOMPRESSER DES FICHIERS ZIP

COMPRESSER/DÉCOMPRESSER DES FICHIERS ZIP


 Information sur la source

Note :
9,6 / 10 - par 10 personnes
9,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Modules Niveau :Initié Date de création :15/07/2002 Date de mise à jour :15/07/2002 17:46:01 Vu / téléchargé :21 487 / 2 845

Auteur : Klimero

Ecrire un message privé
Commentaire sur cette source (44)
Ajouter un commentaire et/ou une note

 Description

Il s'agit d'une classe et d'un module permettant d'ouvrir un fichier ZIP pour en extraire le contenu ou y ajouter des fichiers. Exemple d'utilisation :

Dim cZip as ccZip
Set cZip = New ccZip

Call cZip.Init "Toto.zip"   ' Si le fichier existe il est ouvert, sinon il est créé

Dim lRet as Long

lRet = cZip.AddFile("D:\temp\Titi.txt")
'** Ajoute "temp\Titi.txt"

ChDir "d:\temp"
lRet = cZip.AddFile("Titi.txt")
'** Ajoute "Titi.txt"
lRet = cZip.AddFile("D:\temp\Titi.txt", , True)
'** Ajoute "Titi.txt". Le troisième paramètre indique qu'il ne faut pas prendre en compte le chemin du fichier.

lRet = cZip.Decompress("D:\temp")
'** Décompresse tous les fichiers de l'archive dans D:\temp

Dim sName as String
sName = cZip.GetFile(5)
'** Renvoie le nom (avec son chemin relatif) du 5è fichier de l'archive.


lRet = cZip.Decompress("D:\Temp", "Toto.txt")
'** Décompresse uniquement le fichier Toto.txt dans D:\temp

Pour le reste je vous laisse vous amuser avec, le source est commenté.

Source

  • Le projet dans l'archive ZIP est le programme de test dont je me suis servis pour débugger la classe. Pour utiliser la classe ccZip, vous devez avoir zip32.dll et unzip32.dll (fournis dans le zip).
  • Ajoutez le module mDLLProc.bas et la classe ccZip.cls à votre projet pour pouvoir utiliser la classe.
Le projet dans l'archive ZIP est le programme de test dont je me suis servis pour débugger la classe. Pour utiliser la classe ccZip, vous devez avoir zip32.dll et unzip32.dll (fournis dans le zip).

Ajoutez le module mDLLProc.bas et la classe ccZip.cls à votre projet pour pouvoir utiliser la classe.

 Conclusion

Je crois qu'il y a un bug avec les chemins réseaux, il faut obligatoirement connecter un lecteur (la dll n'accepte pas les chemins commencant par \\"

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture PING GRAPHIQUE
REDÉMARRER PROPREMENT WINDOWS 2000 AVEC EXITWINDOWSEX
Source avec Zip GESTION DES TIRAGES DUN LOTO QUELCONQUE
Source avec Zip CASSE DES BRIQUES
Source avec Zip UN JEU DE DÉMINEUR

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) CRYPTAGE ET DECRYPTAGE par jerichez
Source avec Zip Source avec une capture Source .NET (Dotnet) EXEMPLE MODBUS POUR MODULES ADAM, BECKHOFF, WAGO par mnmsjaune
Source avec Zip Source .NET (Dotnet) CRÉER SON PROPRE DESIGNER COMME CELUI DE VISUAL STUDIO par ShareVB
Source avec Zip Source .NET (Dotnet) CONVERSION UTM VERS LAT/LONG par BarresLTD
Source avec Zip CPROPGROUP : COLLECTION FAITE MAISON par Flocreate

Commentaires et avis

Commentaire de Alain Proviste le 15/07/2002 22:19:03 administrateur CS

Ouah Brava là je reste bouche-bée... Depuis que j'attendais ça... Franchement... Au début j'étais plutôt incrédule... Puis j'ai regardé... J'ai ouvert le fichier Zip du projet avec ce programme... Mais je me suis dit "il a dut prévoir le coup, en fait c't'une blague..." Puis j'ai ouvert un que je venais de télécharger et là, oh, ça focntionne ( sauf le taux de compréssion, j'ai du mal à voir à quoi il sert... )

Dommage quand même qu'il faille traîner ces deux dlls...

Sinon c'est parfait. 9/10 à cause des dlls.

Commentaire de Alain Proviste le 15/07/2002 22:19:59 administrateur CS

Ben ouais parce que chez moi le taux il restait à 5 toujours quoi que je fasse...

Commentaire de Alain Proviste le 15/07/2002 22:23:21 administrateur CS

Ah oui une dernière chose pas de problème avec le réseau :

\Pii-300cWINDOWSBureauzip.zip a parfaitment fonctionné, malgré les doubles slashs...

Commentaire de Klimero le 16/07/2002 10:13:44

Content que ca te plaise : ) Si tu veux les sources des dlls je dois les avoir quelque part, c'est fait en Visual C++ et on peut les trouver sur le net, c'est open source et libre de droit.

Commentaire de Alain Proviste le 16/07/2002 10:57:04 administrateur CS

Ah oui les sources ça m'interesse pas mal...
Si tu peux dire où je peux les trouver ça m'interesse.

Commentaire de Klimero le 16/07/2002 11:43:09

Ce fichier contient les informations sur la dernière version des dlls zip : ftp://ftp.info-zip.org/pub/infozip/doc/WHERE

Plus d'info sur : http://www.info-zip.org/pub/infozip/
Tu devrais trouver tout ce que tu as toujours voulu savoir sur le zip et mm plus en cherchant un peu.

Commentaire de olid le 04/09/2002 17:53:40

Bonzour,

Ce source est vraiment extra, et me rend sacrément service (Adieu ligne de commande DOS :o) mais il me confronte à un autre problème :

Je m'en sert dans un prog d'installation de skins empacketés dans un zip. Mais, de nombreux skins (.zip) fait par les utilisateurs contiennent les infos répertoires des fichiers compressés. Et, quand j'utilise cette classe, la structure des répertoires d'origines est restaurée. Du coup, les skins sont mal installés. J'ai essayé de corriger çà en bidouillant le chemin de décompression, mais il y a des skins où les fichiers n'ont pas le même dossier d'origine :o((((

Et, je n'arrive pas comprendre comment on peut modifier la classe pour résoudre ce problème, et comme j'ai pas C++ j'ai l'impression que je me suis lançé dans un chemin de croix :o((

Merci d'avance à toutes aides bénéfiques

Commentaire de Klimero le 05/09/2002 14:52:49

Salut,

En fait il n'y a pas grand chose à modifier à la classe pour pouvoir décompresser les fichiers sans tenir compte des répertoires relatifs. Il suffit de modifier une option passée à la dll : uHonorDirectories

Dans la fonction Decompress, met
uHonorDirectories = 0
à la place de
uHonorDirectories = 1
et le tour est joué !

le mieux est d'ajouter un paramètre à la fonction dans le genre :

Public Function Decompress(sTargetRoot As String, Optional iName As String, Optional iHonorDir As Boolean = True) As Long
...
uHonorDirectories = iHonorDir

Ouala, heureux que ca te plaise ! ;)

Commentaire de olid le 06/09/2002 17:58:14

:op zavais réussi à faire zà par moi-même hier soir, et zetais revenu pour annuler ma question.

Mais, merzi qd même...etpis zà zervira petre à dautre.

De plus, pour la liste du contenu du Zip n'affiche pas le chemin des fichiers, iil fô modifier la routine de remplissage en utilisant la fonction ci-dessous :

Public Function NomDossierSansURL(URL)

    Dim Resultat
    Resultat = URL
    If (Right$(Resultat, 1) = "/") Then
       Resultat = Left$(Resultat, Len(Resultat) - 1)
    End If
    Do While (InStr(Resultat, "/") <> 0)
      Resultat = Right$(Resultat, Len(Resultat) - InStr(Resultat, "/"))
    Loop
    NomDossierSansURL = Resultat
    
End Function

Pour l'anecdote, cette routine a buggée pendant DEUX heures parceque c'est les Slash quil faut détecter, et NON les anti-slash. (Merzi Klimero pour la blague :op )

Bonne continuation.

NB: je mettrais mon source en ligne dés que possible sous l'intitulé Skins pour Yahoo! Messenger

Commentaire de orsam le 24/10/2002 12:45:00

Bonjour,

Bon, cette source et genial, et comme le dit olid, Adieu Commandes DOS.
Cependant, j'ai un petit probleme... Y a t'il la possibilité (comme les compressions sous dos) des créer des fichiers ZIP avec une taille de 1.44 Mo ? pour une sauvegarde/Restauration sur disquettes ???

Merci
Orsam@free.fr

Commentaire de Klimero le 24/10/2002 15:48:13

Coucou,

hey non il n'est pas possible de découper le zip créé en plusieurs fichiers en utilisant ce code. Tout comme il n'est pas possible de le faire en utilisant Winzip (enfin il me semble bien). Par contre tu peux écrire une fonction de découpage/recollage de fichiers, comme ca tu peux découper l'archive une fois créée, la copier sur disquettes et la recoller ailleurs pour la décompresser.

Et voilou ;)

Commentaire de TheDjinn le 30/10/2002 13:06:44

lut j'ai pas tester mais j'imagine kil est tres bien, moi je cherche un tar/untar
si tu a une idee de la ou je peut trouve un exemple ca serai cool
merci.
bon code ;)

Commentaire de MyC le 21/01/2003 12:16:46

Salut,

Je ne comprends pas pq, mais chez moi l'exe fonctionne très bien mais pas la source.

Help, please !

Commentaire de Klimero le 21/01/2003 14:34:52

est-tu sûr d'avoir ajouté les fichiers nécessaire à ton projet ? Quel est exactement l'erreur ?

Commentaire de doggy le 15/02/2003 08:40:19

Excellent excepté les commentaires du code :-(
Très dommage car la source est très bien, mais il n'y a aucun commentaire ... 7/10

Commentaire de Klimero le 17/02/2003 11:10:29

Comment ca aucun commentaire ??!!! Chaque variable d'instance est décrite et il y a une description de chaque fonction avec les valeurs de retour possibles. Seules les propriétés ne sont pas commentées car je trouve qu'elles ont un nom suffisament explicite. Si tu veux parler des attributs de procédure, effectivement je ne me suis pas amusé à les remplir. Par contre il y a une mini-doc en haut de cette page...

Commentaire de pcpunch le 01/04/2003 18:09:28

je n arrive pas avoir que les fichier ds le zip, il y a le chemin aussi qd je compress... COmment faire svp!!!

Commentaire de Klimero le 02/04/2003 11:04:51

Il y a des exemples d'utilisation en haut de cette article, faut se renseigner avant de poser des questions...

Commentaire de pcpunch le 02/04/2003 12:55:04

ok dsl, j avais pas vu merci

Commentaire de ONC le 19/05/2003 19:25:07

Juste pour dire MERCI :) Ca me rend vraiment bien des services :)

Commentaire de ONC le 20/05/2003 14:53:01

Par contre, autant la décompression ne pose aucun pb, autant la compression refuse de me générer un .zip...

L'exe marche bien, mais si j'execute le projet dans VB ca ne marche pas.
Si je supprime ou renome l'exe et que je le regénere, le nouvel exe (au pasage plus petit) arrive bien à créer l'archive.

Vous me direz c'est pas trop grave.

Sauf qu'une appli un peu plus grosse ou je voulais l'utiliser n'arrive pas non plus à compresser, même si je lance l'exe...

Commentaire de ONC le 20/05/2003 15:00:33

Mouarf :) J'ai trouvé :)

Et c'est peut etre la même chose qui est arrivé à MyC.

En fait, un exe lorsqu'on lui demande de charger des DLL regarde si elles ne sont pas dans son repertoire à lui, et si elles n'y sont pas regarde si elles sont pas dans le repertoire windowssystem

Or, quand on execute un prg depuis l'EDI de VB, ce n'est pas le rep où est situé le .vbp qui compte mais le rep ou est situé vb6.exe !

Il faut donc que les DLL soient dans le même rep que VB6 pour qu'il puisse les utiliser.

L'autre solution beaucoup plus sur c'est de les mettre dans windowssystem, ce dont je me refusais pour l'instant mais j'en ai bien été forcé pour eviter tous ces pb ;-)

Donc now ca roule :)
(ce qui est bizard c'est que ca ne l'empechait pas de lire le .zip... enfin passons)

Commentaire de Klimero le 20/05/2003 15:04:33

Peut-être un bug du compilateur VB ? J'ai déjà eu un cas où une application ne fonctionnait pas correctement si je la compilais avec l'option d'optimisation des performances. J'ai également déjà eu le cas d'une application qui ne fonctionnait qu'une fois compilée et pas depuis l'interpréteur.

As-tu installé le Service Pack 5 de visual studio ? Il corrige pas mal de bugs et pe que ca en fait parti. Si tu ne l'as pas tu peux le télécharger sur le site de micro$oft.

Commentaire de ONC le 20/05/2003 16:22:26

Je n'avais pas le SP5 mais je l'ai installé dès que j'ai vu que ca ne zippait pas depuis l'interpreteur.
Ca n'a rien changé.

Mais depuis que j'ai mis les 2 DLLs dans windowssystem, plus aucun pb même depuis l'interpreteur :)

Commentaire de anakhin le 14/08/2003 15:40:38

ya pas a ch... ce code est nickel alors chapeau bas môsieur
10/10

Commentaire de balifoy le 27/09/2003 21:57:39

Rien d'autre à ajouté, c exactement ce que je recherchai!!
Merci bien monsieur ;o)

Commentaire de CyberFlash le 30/09/2003 20:20:31

Non franchement cette source est super. elle m'a bien rendu service.

Mais j'ai quand même une question:
Dans les commantaire, il est bien indiqué que la fonction AddFile retourne la valeur 0 ou 1.
Maintenant voilà... Avec certain fichier, cette fonction me renvoi non pas un 0 ni un 1 mais un 12 !!!

J'aimerais bien connaitre d'ou viens se chiffre??

Merci d'avance

Au fait, ce '12' me viens (entre autre), avec des film au format .AVI. Mais il apparaît aussi avec d'autre fichier

Commentaire de CyberFlash le 30/09/2003 20:44:57

Suite au message que j'ai posté il y a qq min et aux teste que je viens de faire je peux vous affirmer que:

- Si un nom de fichier comporte le caractère suivant:  [ (crochet d'ouverture), et bien celui-ci n'est pas ajouter au ZIP et une erreur est retournée.

Voilà pour l'information
@+

Commentaire de vivebaloo le 29/10/2003 13:10:41

êtes vous bien sûr que je peux l'utiliser dans un milieu professionnel (je ne vends rien mais je suis pro quand même) sans rien payer ?

Commentaire de Klimero le 29/10/2003 13:46:39

ben, euh, à moins que vous ayez très envie de m'envoyer des sous, moi j'ai rien contre :) sinon faut voir ce que dit la licence ZIP, je l'ai pas relu depuis longtemps mais il me semble bien que c'est complètement libre de droit, en tout cas les sources sont téléchargeables gratuitement sur le net, par contre je ne les fourni pas.

Commentaire de vivebaloo le 29/10/2003 15:12:39

est-il possible de zipper directement un dossier et ses sous-dossier en concervant l'arborescence ?

Commentaire de Klimero le 29/10/2003 17:40:03

Bien sûr, il suffit que tu le code. Le travail est déjà pas mal maché non ?

Commentaire de ralf19b3 le 04/11/2003 14:11:55

est ce ke vous pouvez explike comment faire pour compresser un dossier car moi g seulment besoin de compression de dossier et aparament, ce n pas faisableavec ce programme , merci d'avance

Commentaire de Horfee le 28/12/2003 23:25:11

ca existerait pas en VB.NET ???trop la fleme de le retaper...

Commentaire de Patrice99 le 16/02/2004 13:33:19

Est-ce que par hasard quelqu'un n'aurait pas déjà cherché à remettre au propre cette classe, qui fonctionne très bien par ailleurs, mais qui comporte de nombreuses variables globales dans tous les sens ? ben sinon je vais le faire... j'ai déjà fait une fonction qui installe à la volée les 2 dll zip dans le répertoire système, si elles n'y sont pas déjà.

Commentaire de tostinni le 01/04/2004 19:23:01

Merci bcp Klimero, cette classe est vraiment tres utile.
Et je confirme : ca accepte les chemins rezo sans probleme et la variable bJunkDir est aussi extremement utile.

Encore merci pour tt.

Nikko

Commentaire de YellowPanther le 13/06/2004 20:30:11

La source est très bien.
Est-il possibe avec ces DLL de créer un auto-extractible?

Yellow_Panther

Commentaire de Klimero le 14/06/2004 11:15:08

Pas que je sache...

Commentaire de Goldenbond le 28/06/2004 10:59:44

J'ai pas regardé la source, juste les commentaires que je sais déjà que cela rique d'être excellent !!!

Merci ! :-)

Commentaire de PaTaTe le 09/08/2004 03:15:29

est ce normal que quand je souhaite decompresser un fichier il ne le decompresse pas ?

J'ai pas encore essayé laa compression

Commentaire de PaTaTe le 19/08/2004 17:54:28

C bon g trouvé !

Par contre si quelqu"un c comment retourner la progression de la decompression je suis preuneur :)

@+

Commentaire de odan71 le 18/04/2005 16:26:23

pile qu'est-ce-qui m'faut :>)

grand merci ;)

Commentaire de guy000 le 03/05/2005 15:02:36

moi aussi c'est juste ce qu'il me fallait, c'est pour ca que je te dis merci.

cependant j'ai un probleme avec les gros fichiers,lorsque j'ajoute un fichier de 85 Mo ca plante

Commentaire de rafanel le 23/09/2005 09:47:07

moi aussi c'est juste ce qu'il me fallait,
-1) mais peut on rajouter au debut du chemin du fichier la lettr edu lecteur dans l'archive?
ex:
c:\temp\toto.txt
au lieu d'avoir
temp\toto.txt

-2) peut on connectre le taux de compression la taille du zip avant qu'il soit réellement écrit dans le fichier de destination?

merci d'avance
TR

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,451 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales