Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LIRE/EXTRAIRE UN ZIP 100% VB


Information sur la source

Catégorie :Compression & Split Classé sous : zip, decompression, extraire, lire, zlib Niveau : Débutant Date de création : 16/09/2006 Date de mise à jour : 17/09/2006 14:29:51 Vu / téléchargé: 10 957 / 1 813

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (26)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Bonjour, voici une petite mise à jour d'un vieu code pour lire les zip. Celui ci a l'avantage d'être codé 100% en visual basic 6. Pas de zlib ou autre utilitaire de decompression tout est fait a la mano. C'est forcement un peu plus lent mais le controle est total.
 

Conclusion

Toute amelioration est la bienvenue

Bonne prog
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

17 septembre 2006 14:29:52 :
Correction des noms de fichiers avec accents + code zero API !

Commentaires et avis

signaler à un administrateur
Commentaire de GRAZNOK le 16/09/2006 19:33:12

J'avais déjà testé ton ancien code et ça marche du tonnerre.
Y aurait-il la possibilité de faire une source .NET2 (juste pour lire un ZIP, pas l'extraire) ?

signaler à un administrateur
Commentaire de jack le 17/09/2006 02:17:16 administrateur CS

Waouh, sympa ça !
Mais je vois que tu as le même problème que moi (avec ZLib) pour les caractères accentués dans les noms de répertoire :
- Moi : En utilisant ZLib pour zipper et unzipper, je n'ai pas de problème. Par contre, si j'ouvre un de ces zip avec WinZip et qu'il contient un nom de fichier ou de répertoire avec accent, ça bugue.
- Toi, c'est l'inverse : Si on créé un zip avec Winzip (qui contient un répertoire avec accent), ta lecture est buguée.
Va falloir qu'on s'associe pour éradiquer ce bug !
Je vais y consacrer cette humide nuit.

signaler à un administrateur
Commentaire de EBArtSoft le 17/09/2006 13:57:58 administrateur CS

ce n'est rien juste un petit probleme de conversion ASCII->ANSI je m'en occupe

@+

signaler à un administrateur
Commentaire de EBArtSoft le 17/09/2006 14:31:50 administrateur CS

Voila c'est corrigé pour les accents de plus le code de lecture et extraction des zip n'utilie plus une seule API !

@+

signaler à un administrateur
Commentaire de jack le 17/09/2006 17:59:01 administrateur CS

P*@!£*n ! (pour être poli)
Ca fait des lustres que j'essaye de trouver une concordance entre ces jeux de caractères, persuadé qu'il fallait passer par le paramétrage de l'OS.
Et vlan, EBartSoft résoud ça en 32 minutes. Ca me dégoute !

EBartSoft : Tu es mon héros (avec RenField)

(la vache, je suis sur le cul. J'étais parti dans les méandres des structures des jeux de caractères : une horreur. D'ailleurs, à ce sujet, je vous conseille la lecture de ce superbe article de l'historique (et traduit en français, pour une fois) : http://french.joelonsoftware.com/Articles/Unicode.html )

signaler à un administrateur
Commentaire de EBArtSoft le 17/09/2006 20:23:35 administrateur CS

Jack> a ouai quand meme :p
bah merci d'avoir flatté notre ego et merci pour l'article :p

@+

signaler à un administrateur
Commentaire de GRAZNOK le 17/09/2006 21:53:57

EBArtSoft > t'es pas passé au .NET encore ? J'ai vu toutes tes sources et franchement chapeau bas. Moi quand j'ai vu .NET à l'horizon, j'ai bondit dessus... et qu'est-ce qu'on y est mieux :)

signaler à un administrateur
Commentaire de EBArtSoft le 17/09/2006 22:29:39 administrateur CS

Le principal probleme avec .NET c'est qu'il est impossible de créer une structure avec un membre de type tableau a dimention fixe :

Type MONTYPE
Membre1(20) as byte
End Type

Pour ecrire ça il faut pas moins d'une vingtaine de ligne en .NET ! hors quand on doit travailler avec la memoire ou lire des fichiers binaire on y passe forcement. Tant que cela ne sera pas corigé je ne ferais pas de .NET mon language principal !

Le managé n'a pas que du bon loin de la ! et comme tout language de prog il faut savoir l'utilisé au bon moment ;p

@+

signaler à un administrateur
Commentaire de Renfield le 18/09/2006 09:33:45 administrateur CS

Conversion ANSI=>ASCII postée en Snippet sur www.codyx.org, si ca en interesse certains.

on aurait pu utiliser les APIs 'CharToOem' & Co... de mémoire, c'est ce que j'avais utilisé, il y a fort longtemps dans un de mes projets

signaler à un administrateur
Commentaire de Scalpweb le 18/09/2006 14:10:24

ET bah EBArt, qu'est-ce que tu nous raconte ??
Une vingtaine de ligne ?? Ah...
Moi perso j'aurais fais ça comme ça :

Public Class MONTYPE
    Public Membre1(20) as byte
End Class

Puis ensuite :

dim Var as New MONTYPE

Ce qui reviens au même au niveau du nombre de ligne.
Enfin, il me semble...

@Plaouche

signaler à un administrateur
Commentaire de Renfield le 18/09/2006 15:12:03 administrateur CS

une classe n'est pas un Type ^^

signaler à un administrateur
Commentaire de EBArtSoft le 18/09/2006 15:23:02 administrateur CS

Scalpweb> certe à vue d'oeil on dirait la meme chose mais il te sera impossible de l'enregistrer dans un fichier en l'etat et je ne parle pas d'une eventuelle lecture/ecriture en memoire ! C'est la que le bas blesse !

@+

signaler à un administrateur
Commentaire de Scalpweb le 18/09/2006 15:29:48

Merci Renfield de me prendre pour un idiot... :-)

EBArtSoft, je ne comprends pas vraiment... Mais si tu le dis...

signaler à un administrateur
Commentaire de EBArtSoft le 18/09/2006 15:31:42 administrateur CS

Renfield> Ok version API ajoutée !

@+

signaler à un administrateur
Commentaire de EBArtSoft le 18/09/2006 15:40:53 administrateur CS

Scalpweb> Ok voila un exemple :

    Private Class MONTYPE
        Public Membre1(20) As Byte
    End Class

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim t As New MONTYPE
        Dim i As Integer
        Dim f As Integer

        For i = 0 To 20
            t.Membre1(i) = i
        Next

        f = FreeFile()
        FileOpen(f, "c:\test.txt", OpenMode.Binary)
        'FilePut(f, i)      'Pas de probleme !
        FilePutObject(f, t) 'L'E/S de fichier de type 'MONTYPE' n'est pas valide.
        FileClose(f)

    End Sub

Pourquoi mon fichier "c:test.txt" ne contient pas les données de la classe ? et bien par ce que cela n'est pas prevu pour !

@+

signaler à un administrateur
Commentaire de Renfield le 18/09/2006 16:38:00 administrateur CS

"Merci Renfield de me prendre pour un idiot... :-)"
je ne te prend pas pour un idiot... je n'ai fait que dire en (très) condensé l'idée sous-jacente, à savoir qu'un type est "un ensemble de données contigües en mémoire" (comme les tableaux).
une classe, non...

c'est toute la subtilité entre les variables de type 'valeur' et de type 'référence'...

signaler à un administrateur
Commentaire de Sechaud le 19/09/2006 12:07:13

Bonjour  EBArtSoft, comme toujours, ils sont super tes programmes.
Tu dis que toute amélioration est la bienvenue.
Pourquoi ne pas mettre un bouton qui permettrait d'extraire tous les fichiers d'un coup, plutôt que de s'en tenir à une mono extraction?
Un bouton pour fixer un lieu d'extraction et une boucle en utilisant le code du ListDoubleClick iraient très bien.

signaler à un administrateur
Commentaire de EBArtSoft le 19/09/2006 12:20:53 administrateur CS

Sechaud> car je parlais du moteur d'extration et pas de l'interface biensur ! Je te l'accorde l'interface est minimaliste et puis pour dire la verité je suis pas tres fort dans ce domaine :p

@+

signaler à un administrateur
Commentaire de Scalpweb le 20/09/2006 11:37:34

Ok enfait je connaissais pas le FilePutObject.

Il doit bien y avoir un moyen de le remplacer, du moins j'imagine...

Enfin bref, merci pour ce cours.

Cependant je reste convaincu que cet inconvéniant et minim par rapport à tout les avantages de .Net2

Mais c'est un avis personnel qui n'engage que moi :-D

signaler à un administrateur
Commentaire de GRAZNOK le 20/09/2006 21:02:28

Aurais-tu une source pour lire les RAR et les CAB ?
Ou bien si quelqu'un a une source exploitable en VB ?

signaler à un administrateur
Commentaire de jack le 20/09/2006 23:02:13 administrateur CS

... pis un mars

signaler à un administrateur
Commentaire de GRAZNOK le 21/09/2006 06:48:21

Ben quoi ?
En fait j'ai trouvé des infos sur www.wotsit.org. Je vais essayer d'en tirer une source. Mais je demandais, au cas où.
En même temps je pourrais utiliser unrar.dll. Faut voir...

signaler à un administrateur
Commentaire de EBArtSoft le 21/09/2006 08:11:05 administrateur CS

GRAZNOK>

http://www.vbfrance.com/codes/LISTER-CONTENU-FICHIER-RAR-SANS-DLL_17165.aspx

signaler à un administrateur
Commentaire de GRAZNOK le 21/09/2006 09:20:55

En effet je l'avais déjà vu :)
Mais voilà, sous .NET2 ça passe pas trop. Alors je cherche...

De toutes façons, merci.

signaler à un administrateur
Commentaire de FREMYCOMPANY le 30/09/2006 12:11:09

Et ca ???

Public Structure MyType
   Private sT(20) as Byte
End Structure

signaler à un administrateur
Commentaire de Xiaomao le 07/07/2007 09:28:48

Très interressant. Si j'ai bien compris, c'est l'algorithme complet du format zip.

Je vais lire attentivement ce code pour voir si je peux l'adapter dans un autre langage qui tournerait sous Linux (en Java par exemple). En effet, les dezippeurs Linux gèrent mal les accents dans les noms de fichiers (la fameuse transcodification ci dessus).

Donc, déjà, de base, je te mets un gros 10/10.

Je vous tiens au courant de mes recherches.

Merci beaucoup.

Xiaomao.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

tuto pour lire et extraire un zip [ par sephiroth27 ] bonjour,je cherche un tuto ou une explication de votre part pour lire et extraire un ZIP.Merci d'avance. Recherche ZIp + decompression + execution [ par Acry ] Bonjour, je cherche un debut de code pour me lancer... je doit en faite lancer un .vbs qui se situera tjr dans le même dossier qu'un fichier zip. C lire et extraire une ligne d' un fichier texte (vbs) [ par liocifer ] Salut,Je viens de débuter en vbs et j' ai un souci pour lire ligne à ligne un fichier texte, puis une fois trouver la ligne correspondant à la valeur extraire des images compréssées [ par chicochiri ] bonjourdans mon appli j'utilise un dossier avec 28 images que je veut compresser dans un zip ou un rar, je voudrai ensuite  pouvoir extraire par code dézzipper des fichiers via VBA [ par Gunshin82 ] Bonjour, Voici la situation :Je reçois un documents zip contenant 5 fichiers, avec des extensions différentes, par entreprise et j'ai plus de 200 entr Decompression zlib [ par Vangeliusvt ] Bonjour,Tous les fichiers d'un de mes dossiers se sont transformés en .ZLIB, je ne sais absolument pas pourquoi.Après quelques recherches sur le net j en vbnet lire un fichier extraire une ligne et l'ecrire dans un autre fichier [ par galopeur ] Bonjour,je voudrais à partir d'un fichier qui comprends plusieurs lignes différentes extraire celle qui ont CLIE  pour entête decompression des sources zip [ par vieuxjo ] j'ai chargé plusieurs sources compressés en zip que je n'arrive pas à décompresser.(sources 7,85,266...)stuffit Expander ne comprend pas le format et extraction/lecture d'une resource [ par saveourssouls ] Voila comme dit le titre, j'aimerais extraire une resrouce mais seulement la différence est que j'aimerais extraire une resource autres que avi, extraction/ecture d'une resource [ par saveourssouls ] Voila comme dit le titre, j'aimerais extraire une resrouce mais seulement la différence est que j'aimerais extraire une resource autres que avi,


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,09 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.