Ficiher ZIP dans les PPC

Résolu
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 - 1 nov. 2009 à 20:55
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 - 2 nov. 2009 à 11:02
Bonjour,

voila une semaine que je cherche le moyen de créer et décompresser un fichier zip, dans un PPC.

VB.net comprend une classe "IO.compression" qui créer est décompresse des fichier zip. Seulement voila rien de cela(j'ai
pas trouver) pour le CF.

Aujourd'hui j'ai un code VB6 shell qui me permet de le faire super bien sur mon PC:

Private Sub Command1_Click()
Const ForReading 1, ForWriting 2, ForAppending = 8

Dim Source, Destination, MyHex, MyBinary, i
Dim oShell, oApp, oFolder, oCTF, oFile
Dim oFileSys

Source = "C:\4reu"
Destination = "C:\maSauvegarde.zip"

MyHex = _
Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

For i = 0 To UBound(MyHex)
MyBinary = MyBinary & Chr(MyHex(i))
Next

Set oShell = CreateObject("WScript.Shell")
Set oFileSys = CreateObject("Scripting.FileSystemObject")

'Creation du zip
Set oCTF = oFileSys.CreateTextFile(Destination, True)
oCTF.Write MyBinary
oCTF.Close
Set oCTF = Nothing

Set oApp = CreateObject("Shell.Application")

Set oFolder = oApp.Namespace(Source)
If Not oFolder Is Nothing Then _
oApp.Namespace(Destination).CopyHere oFolder.Items
Dim v_Time As Long
v_Time = Timer
While (Timer - v_Time) < 5
DoEvents
Wend
Set oFile = Nothing
On Error Resume Next
End Sub

Private Sub Command2_Click()
Dim osa As Shell
Dim xrDec, nfCom As String
Dim nbFic As Single
xrDec = "C:\me"
nfCom = "C:\ma.zip"
Set osa = New Shell
' Nombre de fichiers à extraire
nbFic = osa.Namespace(nfCom).Items.Count
' Décompression des fichiers
osa.Namespace(xrDec).CopyHere osa.Namespace(nfCom).Items
Set osa = Nothing
End Sub

Y a t il une possibilité de convertir ce code en VB.net CF?
Puis je avoir une astuce même tout autre pour créer et décompresser des zip ?

Difficulté supplémentaire il ne faudrait pas avoir à installer un softe supplémentaire (WinZip ....)

Merci de votre aide. En tout cas de m'avoir lu

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 nov. 2009 à 01:12
Salut
Une simple recherche de "unzip" parmi les codes du site te donnera des exemple et surement la réponse; il faut commencer par là. Merci

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
2 nov. 2009 à 11:02
Merci jack,

Ta réponse aussi simple soit-elle ma permis de réussir à déziper un fichier!!!!

Je tien a être claire sur le fait j'ai vraiment cherché! L'erreur que je faisait est que je fessais tout sur google est que je posé l'expression "ppc" comme mot clef. Il faut dire que j'ai vraiment crochet, j'ai surement manqué de recule.

Bon, pour les gens qui voudrais savoir comment le faire suivez ce qui suit :

- Télécharger "SharpZipLib.dll" puis ajouter le comme référence du projet

Copier coller le code suivant

Imports System
Imports System.IO
Imports ICSharpCode.SharpZipLib
Imports ICSharpCode.SharpZipLib.Zip

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ExtractArchive("\4re.zip", "\My4re")
Stop
End Sub


Public Sub ExtractArchive(ByVal zipFilename As String, ByVal ExtractDir As String)
Dim Redo As Integer = 1
Dim MyZipInputStream As ZipInputStream
Dim MyFileStream As FileStream
MyZipInputStream = New ZipInputStream(New FileStream(zipFilename, FileMode.Open, FileAccess.Read))
Dim MyZipEntry As ZipEntry = MyZipInputStream.GetNextEntry
Directory.CreateDirectory(ExtractDir)
While Not MyZipEntry Is Nothing
If (MyZipEntry.IsDirectory) Then
Directory.CreateDirectory(ExtractDir & "" & MyZipEntry.Name)
Else
If Not Directory.Exists(ExtractDir & "" & Path.GetDirectoryName(MyZipEntry.Name)) Then
Directory.CreateDirectory(ExtractDir & "" & Path.GetDirectoryName(MyZipEntry.Name))
End If
MyFileStream = New FileStream(ExtractDir & "" & MyZipEntry.Name, FileMode.OpenOrCreate, FileAccess.Write)
Dim count As Integer

Dim buffer(4096) As Byte
count = MyZipInputStream.Read(buffer, 0, 4096)
While count > 0
MyFileStream.Write(buffer, 0, count)
count = MyZipInputStream.Read(buffer, 0, 4096)
End While
MyFileStream.Close()
End If
Try
MyZipEntry = MyZipInputStream.GetNextEntry
Catch ex As Exception
MyZipEntry = Nothing
End Try
End While
If Not (MyZipInputStream Is Nothing) Then MyZipInputStream.Close()
If Not (MyFileStream Is Nothing) Then MyFileStream.Close()
End Sub
End Class

Avec ça vous pouvez décompresser vos zip.

Merci encore jack et bon code, disait l'autre
0
Rejoignez-nous