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 !

COMPRÉSSION / DÉCOMPRÉSSION


Information sur la source

Catégorie :Compression & Split Classé sous : compression, decompression Niveau : Expert Date de création : 28/03/2001 Vu : 12 515

Note :
7,25 / 10 - par 12 personnes
7,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Voila encore une autre solution pour compréssé
 

Source

  • Dans un module appelé : modLZW
  • Option Explicit
  • '
  • ' Module de compression/décompression (Méthode LZW)
  • ' 21/02/1999 [ Pied-vif ]
  • '
  • ' Taille des mots à lire
  • Public BITCHAR As Long
  • ' Taille des mots du dictionnaire
  • Public BITIND As Long
  • ' Taille d'un long en binaire
  • Private Const LONGMOT = 32
  • Private lgDicoMin As Long
  • Private lgMaxDico As Long
  • ' Taille du dictionnaire courant. Sa taille ne doit
  • ' pas dépasser 2^BITIND
  • Private lgDictionnaire As Long
  • ' Dictionnaire de compression/décompression
  • Private Dictionnaire() As String
  • ' Handle du fichier à (dé)compresser
  • Private inFIn As Integer
  • ' Handle du fichier résultat
  • Private inFOut As Integer
  • ' Longueur du fichier source
  • Private lgLenF As Long
  • ' Nombre d'éléments lus
  • Private lgNbLu As Long
  • ' Nombre d'éléments écrits
  • Private lgNbEc
  • ' Variable pour boucle For...Next
  • Private lgFor As Long
  • ' Buffer de lecture
  • Private stReadBuffer As String
  • ' Buffer d'écriture
  • Private stWriteBuffer As String
  • Private Sub CreationDico()
  • ' Création du dictionnaire de base pour la compression/décompression
  • lgDicoMin = (2 ^ BITCHAR) - 1
  • lgDictionnaire = (2 ^ BITCHAR) - 1
  • ReDim Dictionnaire(lgDictionnaire) As String
  • For lgFor = 0 To lgDictionnaire
  • Dictionnaire(lgFor) = DecToBin(lgFor, BITCHAR)
  • Next lgFor
  • lgMaxDico = 2 ^ BITIND
  • ReDim Preserve Dictionnaire(lgMaxDico - 1) As String
  • End Sub
  • Public Function DecToBin(lgNbDec As Long, lgBase As Long) As String
  • ' Transforme un décimal en binaire
  • ' La fonction complète avec des 0 (ou des 1 si négatif) en fonction de BITCHAR
  • ' Retourne le résultat sous forme de chaîne
  • Dim stResultat As String
  • Dim lgDec As Long, lgK As Long
  • If lgNbDec < 0 Then lgK = 1
  • lgDec = Abs(lgNbDec)
  • Do While lgDec <> 0
  • stResultat = (lgDec + lgK) Mod 2 & stResultat
  • ' Divisions successives par 2, pour obtenir le nombre binaire
  • lgDec = lgDec \ 2
  • Loop
  • DecToBin = Right$(String$(lgBase, CStr(lgK)) & stResultat, lgBase)
  • End Function
  • Public Function BinToDec(stNbBin As String) As Long
  • ' Transforme un binaire en décimal
  • Dim lgLen As Long
  • Dim dlResultat As Double, lgDeux As Double
  • Dim stTmp As String
  • lgLen = Len(stNbBin)
  • stTmp = StrReverse(stNbBin)
  • lgDeux = 1
  • For lgFor = 1 To lgLen
  • dlResultat = dlResultat + CLng(Mid$(stTmp, lgFor, 1)) * lgDeux
  • lgDeux = lgDeux * 2
  • Next lgFor
  • If dlResultat > 2147483647 Then
  • BinToDec = dlResultat - 4294967295#
  • Else
  • BinToDec = dlResultat
  • End If
  • End Function
  • Private Function InDico(stString As String) As Long
  • ' Regarde si la chaîne 'stString' se trouve dans le dictionnaire
  • ' Retourne sa position si la chaîne est trouvée, sinon -1
  • Dim lgDeb As Long
  • If Len(stString) > BITCHAR Then lgDeb = lgDicoMin
  • For lgFor = lgDeb To lgDictionnaire
  • If Dictionnaire(lgFor) = stString Then
  • InDico = lgFor
  • Exit Function
  • End If
  • Next lgFor
  • InDico = -1
  • End Function
  • Public Sub Start(blCompress As Boolean, stFileIn As String, stFileOut As String)
  • Dim lgTmp As Long
  • ' Création du dictionnaire
  • Call CreationDico
  • ' Initialisation des variables d'avancement
  • lgLenF = FileLen(stFileIn)
  • lgNbLu = 0
  • lgNbEc = 0
  • inFIn = FreeFile
  • ' Ouverture du fichier d'entrée
  • Open stFileIn For Random Access Read As inFIn Len = Len(lgTmp)
  • inFOut = FreeFile
  • ' Ouverture du fichier résultat
  • Open stFileOut For Random Access Write As inFOut Len = Len(lgTmp)
  • ' Initialisation des buffers de lecture et écriture
  • stReadBuffer = vbNullString
  • stWriteBuffer = vbNullString
  • If blCompress Then
  • ' Appel de la procédure de compression
  • Call LZW
  • Else
  • ' Appel de la procédure de décompression
  • Call DeLZW
  • End If
  • ' Fermeture des fichiers
  • Close inFIn
  • Close inFOut
  • End Sub
  • Public Function LireBIT(lgBase As Long) As String
  • ' Lit le prochain élément de longueur 'lgBase' dans le fichier d'entrée
  • Dim lgTmp As Long
  • Dim stResultat As String
  • Do While Len(stReadBuffer) < 200000 And Not EOF(inFIn)
  • Get inFIn, , lgTmp
  • ' Un long fait 4 octets (donc lgNbLu + 4)
  • lgNbLu = lgNbLu + 4
  • frmLZW.lblInfo1.Caption = "Lu : " & lgNbLu & " / " & lgLenF
  • DoEvents
  • ' Augmente le buffer de lecture avec l'élément qui vient d'être lu
  • stReadBuffer = DecToBin(lgTmp, LONGMOT) & stReadBuffer
  • Loop
  • stResultat = Right$(stReadBuffer, lgBase)
  • ' ici plantage quand streadbuffer < lgbase !!
  • If Len(stReadBuffer) - lgBase < 0 Then
  • stReadBuffer = vbNullString
  • Else
  • stReadBuffer = Left$(stReadBuffer, Len(stReadBuffer) - lgBase)
  • End If
  • LireBIT = stResultat
  • End Function
  • Public Sub EcrireBIT(stBitIndice As String)
  • ' Ecrit l'élément 'Indice' du dictionnaire sous la base 'lgBase' dans le fichier de résultat de la compression
  • Dim lgTmp As Long
  • Dim lgFor As Long
  • ' Augmente le buffer d'écriture avec la chaîne stBitIndice
  • stWriteBuffer = stBitIndice & stWriteBuffer
  • ' Dès que la chaîne fait au moins 32 caractère (la taille d'un binaire long)
  • ' on en convertit un morceau pour l'ajouter au fichier résultat
  • Do While Len(stWriteBuffer) >= LONGMOT
  • ' Conversion Binaire vers Long
  • lgTmp = BinToDec(Right$(stWriteBuffer, LONGMOT))
  • ' Ecriture dans le fichier
  • Put inFOut, , lgTmp
  • ' Un long fait 4 octets (donc lgNbEc + 4)
  • lgNbEc = lgNbEc + 4
  • frmLZW.lblInfo2.Caption = "Ecrit : " & lgNbEc
  • ' On diminue la buffer d'écriture, de la chaîne qu'on vient d'ajouter
  • stWriteBuffer = Left$(stWriteBuffer, Len(stWriteBuffer) - LONGMOT)
  • Loop
  • End Sub
  • Public Sub LZW()
  • ' Procédure principale de compression
  • Dim lgChaine As Long
  • Dim stCourant As String
  • Dim stCarTmp As String
  • stCourant = LireBIT(BITCHAR)
  • Do While Not EOF(inFIn) Or stReadBuffer <> vbNullString
  • stCarTmp = LireBIT(BITCHAR)
  • If InDico(stCarTmp + stCourant) > -1 Then
  • stCourant = stCarTmp + stCourant
  • Else
  • Call EcrireBIT(DecToBin(InDico(stCourant), BITIND))
  • ' Augmente le dictionnaire
  • lgDictionnaire = lgDictionnaire + 1
  • If lgDictionnaire Mod 100 = 0 Then frmLZW.lblInfo3.Caption = "Taille Dictionnaire : " & lgDictionnaire & " (" & lgMaxDico & ")"
  • Dictionnaire(lgDictionnaire) = stCarTmp + stCourant
  • stCourant = stCarTmp
  • DoEvents
  • End If
  • Loop
  • Call EcrireBIT(DecToBin(InDico(stCourant), BITIND))
  • ' Ecriture du bout de chaîne restant
  • If stWriteBuffer <> vbNullString Then ' Taille d'un élément de type long
  • lgChaine = BinToDec(Right$(stWriteBuffer, LONGMOT))
  • Put inFOut, , lgChaine
  • End If
  • End Sub
  • Public Function DeLZW()
  • ' Procédure de décompression
  • Dim stCode As String
  • Dim lgAvance As Long
  • Dim stOld As String
  • Dim lgCourant As Long
  • Dim stCarTmp As String
  • Dim stCourant As String
  • ' Initialisation de la lecture
  • stCode = LireBIT(BITIND)
  • Call EcrireBIT(Dictionnaire(BinToDec(stCode)))
  • stOld = stCode
  • Do While Not EOF(inFIn) Or stReadBuffer <> vbNullString
  • stCode = LireBIT(BITIND)
  • stCourant = Dictionnaire(BinToDec(stOld))
  • If BinToDec(stCode) <= lgDictionnaire Then
  • stCarTmp = Right$(Dictionnaire(BinToDec(stCode)), BITCHAR)
  • Else
  • stCarTmp = Right$(stCourant, BITCHAR)
  • End If
  • ' Augmente le dictionnaire
  • lgDictionnaire = lgDictionnaire + 1
  • If lgDictionnaire Mod 100 = 0 Then frmLZW.lblInfo3.Caption = "Taille Dictionnaire : " & lgDictionnaire & " (" & lgMaxDico & ")"
  • Dictionnaire(lgDictionnaire) = stCarTmp + stCourant
  • Call EcrireBIT(Dictionnaire(BinToDec(stCode)))
  • stOld = stCode
  • DoEvents
  • Loop
  • End Function
  • Dans une form appelé : frmLZW
  • Private Sub cmdGo_Click()
  • ' Lance l'opération de compression/décompression
  • ' Vérifie que le fichier source existe
  • If Dir(txtSource.Text) = vbNullString Then
  • MsgBox "Le fichier source n'existe pas!", vbInformation, "Données incorrectes"
  • txtSource.SetFocus
  • Exit Sub
  • End If
  • ' Vérifie que le fichier résultat n'existe pas
  • If Dir(txtResultat.Text) <> vbNullString Then
  • MsgBox "Le fichier résultat existe déjà!", vbInformation, "Données incorrectes"
  • txtResultat.SetFocus
  • Exit Sub
  • End If
  • BITCHAR = CLng(txtBITCHAR.Text)
  • BITIND = CLng(txtBITIND.Text)
  • lblInfo4.Caption = "Début : " & Time
  • If optChoix(0).Value Then
  • ' Lance la compression
  • Call Start(True, txtSource.Text, txtResultat.Text)
  • Else
  • ' Lance la décompression
  • Call Start(False, txtSource.Text, txtResultat.Text)
  • End If
  • lblInfo4.Caption = lblInfo4.Caption & "/ Fin : " & Time
  • End Sub
  • Private Sub cmdQuitter_Click()
  • ' Pour Quitter l'application
  • Unload Me
  • End Sub
  • Private Sub cmdSource_Click()
  • ' Choix du fichier source, affichage de la fenêtre d'ouverture d'un
  • ' fichier avec le contrôle CommonDialog
  • cdgFichier.DialogTitle = "Choix d'un fichier source"
  • cdgFichier.Flags = cdlOFNExplorer Or cdlOFNFileMustExist Or _
  • cdlOFNLongNames Or cdlOFNPathMustExist Or cdlOFNHideReadOnly
  • cdgFichier.CancelError = False
  • cdgFichier.Filter = "Tous les fichiers (*.*)|*.*"
  • cdgFichier.ShowOpen
  • txtSource.Text = cdgFichier.FileName
  • If optChoix(0).Value Then
  • txtResultat.Text = txtSource.Text & ".lvb"
  • Else
  • txtResultat.Text = Left$(txtSource.Text, Len(txtSource.Text) - 4)
  • End If
  • End Sub
  • Private Sub Form_Load()
  • ' Initialisation des zones de la fenêtre
  • txtSource.Text = vbNullString
  • txtResultat.Text = vbNullString
  • optChoix(0).Value = True
  • lblInfo1.Caption = vbNullString
  • lblInfo2.Caption = vbNullString
  • lblInfo3.Caption = vbNullString
  • lblInfo4.Caption = vbNullString
  • End Sub
  • Private Sub lblTmp_Click(Index As Integer)
  • End Sub
  • Private Sub optChoix_Click(Index As Integer)
  • ' Change le nom du fichier résultat lorsque la méthode change
  • If txtSource.Text <> vbNullString Then
  • If optChoix(0).Value Then
  • txtResultat.Text = txtSource.Text & ".lvb"
  • Else
  • txtResultat.Text = Left$(txtSource.Text, Len(txtSource.Text) - 4)
  • End If
  • End If
  • End Sub
Dans un module appelé : modLZW

Option Explicit
'
' Module de compression/décompression (Méthode LZW)
' 21/02/1999 [ Pied-vif ]
'

' Taille des mots à lire
Public BITCHAR As Long
' Taille des mots du dictionnaire
Public BITIND As Long
' Taille d'un long en binaire
Private Const LONGMOT = 32
Private lgDicoMin As Long
Private lgMaxDico As Long

' Taille du dictionnaire courant. Sa taille ne doit
' pas dépasser 2^BITIND
Private lgDictionnaire As Long
' Dictionnaire de compression/décompression
Private Dictionnaire() As String

' Handle du fichier à (dé)compresser
Private inFIn As Integer
' Handle du fichier résultat
Private inFOut As Integer

' Longueur du fichier source
Private lgLenF As Long
' Nombre d'éléments lus
Private lgNbLu As Long
' Nombre d'éléments écrits
Private lgNbEc
' Variable pour boucle For...Next
Private lgFor As Long

' Buffer de lecture
Private stReadBuffer As String
' Buffer d'écriture
Private stWriteBuffer As String
Private Sub CreationDico()
' Création du dictionnaire de base pour la compression/décompression
lgDicoMin = (2 ^ BITCHAR) - 1
lgDictionnaire = (2 ^ BITCHAR) - 1
ReDim Dictionnaire(lgDictionnaire) As String
For lgFor = 0 To lgDictionnaire
    Dictionnaire(lgFor) = DecToBin(lgFor, BITCHAR)
Next lgFor
lgMaxDico = 2 ^ BITIND
ReDim Preserve Dictionnaire(lgMaxDico - 1) As String
End Sub
Public Function DecToBin(lgNbDec As Long, lgBase As Long) As String
' Transforme un décimal en binaire
' La fonction complète avec des 0 (ou des 1 si négatif) en fonction de BITCHAR
' Retourne le résultat sous forme de chaîne
Dim stResultat As String
Dim lgDec As Long, lgK As Long
If lgNbDec < 0 Then lgK = 1
lgDec = Abs(lgNbDec)
Do While lgDec <> 0
    stResultat = (lgDec + lgK) Mod 2 & stResultat
' Divisions successives par 2, pour obtenir le nombre binaire
    lgDec = lgDec \ 2
Loop
DecToBin = Right$(String$(lgBase, CStr(lgK)) & stResultat, lgBase)
End Function

Public Function BinToDec(stNbBin As String) As Long
' Transforme un binaire en décimal
Dim lgLen As Long
Dim dlResultat As Double, lgDeux As Double
Dim stTmp As String
lgLen = Len(stNbBin)
stTmp = StrReverse(stNbBin)
lgDeux = 1
For lgFor = 1 To lgLen
    dlResultat = dlResultat + CLng(Mid$(stTmp, lgFor, 1)) * lgDeux
    lgDeux = lgDeux * 2
Next lgFor
If dlResultat > 2147483647 Then
    BinToDec = dlResultat - 4294967295#
Else
    BinToDec = dlResultat
End If
End Function
Private Function InDico(stString As String) As Long
' Regarde si la chaîne 'stString' se trouve dans le dictionnaire
' Retourne sa position si la chaîne est trouvée, sinon -1
Dim lgDeb As Long
If Len(stString) > BITCHAR Then lgDeb = lgDicoMin
For lgFor = lgDeb To lgDictionnaire
    If Dictionnaire(lgFor) = stString Then
        InDico = lgFor
        Exit Function
    End If
Next lgFor
InDico = -1
End Function
Public Sub Start(blCompress As Boolean, stFileIn As String, stFileOut As String)
Dim lgTmp As Long
' Création du dictionnaire
Call CreationDico

' Initialisation des variables d'avancement
lgLenF = FileLen(stFileIn)
lgNbLu = 0
lgNbEc = 0

inFIn = FreeFile
' Ouverture du fichier d'entrée
Open stFileIn For Random Access Read As inFIn Len = Len(lgTmp)
inFOut = FreeFile
' Ouverture du fichier résultat
Open stFileOut For Random Access Write As inFOut Len = Len(lgTmp)

' Initialisation des buffers de lecture et écriture
stReadBuffer = vbNullString
stWriteBuffer = vbNullString

If blCompress Then
' Appel de la procédure de compression
    Call LZW
Else
' Appel de la procédure de décompression
    Call DeLZW
End If

' Fermeture des fichiers
Close inFIn
Close inFOut



End Sub
Public Function LireBIT(lgBase As Long) As String
' Lit le prochain élément de longueur 'lgBase' dans le fichier d'entrée
Dim lgTmp As Long
Dim stResultat As String

Do While Len(stReadBuffer) < 200000 And Not EOF(inFIn)
    Get inFIn, , lgTmp

' Un long fait 4 octets (donc lgNbLu + 4)
    lgNbLu = lgNbLu + 4
    frmLZW.lblInfo1.Caption = "Lu : " & lgNbLu & " / " & lgLenF
    DoEvents

' Augmente le buffer de lecture avec l'élément qui vient d'être lu
    stReadBuffer = DecToBin(lgTmp, LONGMOT) & stReadBuffer
Loop
stResultat = Right$(stReadBuffer, lgBase)
' ici plantage quand streadbuffer < lgbase !!
If Len(stReadBuffer) - lgBase < 0 Then
    stReadBuffer = vbNullString
Else
    stReadBuffer = Left$(stReadBuffer, Len(stReadBuffer) - lgBase)
End If
LireBIT = stResultat
End Function
Public Sub EcrireBIT(stBitIndice As String)
' Ecrit l'élément 'Indice' du dictionnaire sous la base 'lgBase' dans le fichier de résultat de la compression
Dim lgTmp As Long
Dim lgFor As Long
' Augmente le buffer d'écriture avec la chaîne stBitIndice
stWriteBuffer = stBitIndice & stWriteBuffer
' Dès que la chaîne fait au moins 32 caractère (la taille d'un binaire long)
' on en convertit un morceau pour l'ajouter au fichier résultat
Do While Len(stWriteBuffer) >= LONGMOT
' Conversion Binaire vers Long
    lgTmp = BinToDec(Right$(stWriteBuffer, LONGMOT))
' Ecriture dans le fichier
    Put inFOut, , lgTmp
    
' Un long fait 4 octets (donc lgNbEc + 4)
    lgNbEc = lgNbEc + 4
    frmLZW.lblInfo2.Caption = "Ecrit : " & lgNbEc

' On diminue la buffer d'écriture, de la chaîne qu'on vient d'ajouter
    stWriteBuffer = Left$(stWriteBuffer, Len(stWriteBuffer) - LONGMOT)
Loop
End Sub
Public Sub LZW()
' Procédure principale de compression
Dim lgChaine As Long
Dim stCourant As String
Dim stCarTmp As String
stCourant = LireBIT(BITCHAR)
Do While Not EOF(inFIn) Or stReadBuffer <> vbNullString
    stCarTmp = LireBIT(BITCHAR)
    If InDico(stCarTmp + stCourant) > -1 Then
        stCourant = stCarTmp + stCourant
    Else
        Call EcrireBIT(DecToBin(InDico(stCourant), BITIND))
' Augmente le dictionnaire
        lgDictionnaire = lgDictionnaire + 1
        If lgDictionnaire Mod 100 = 0 Then frmLZW.lblInfo3.Caption = "Taille Dictionnaire : " & lgDictionnaire & " (" & lgMaxDico & ")"
        Dictionnaire(lgDictionnaire) = stCarTmp + stCourant
        stCourant = stCarTmp
        DoEvents
    End If
Loop
Call EcrireBIT(DecToBin(InDico(stCourant), BITIND))
' Ecriture du bout de chaîne restant
If stWriteBuffer <> vbNullString Then     ' Taille d'un élément de type long
    lgChaine = BinToDec(Right$(stWriteBuffer, LONGMOT))
    Put inFOut, , lgChaine
End If
End Sub
Public Function DeLZW()
' Procédure de décompression
Dim stCode As String
Dim lgAvance As Long
Dim stOld As String
Dim lgCourant As Long
Dim stCarTmp As String
Dim stCourant As String
' Initialisation de la lecture
stCode = LireBIT(BITIND)
Call EcrireBIT(Dictionnaire(BinToDec(stCode)))
stOld = stCode
Do While Not EOF(inFIn) Or stReadBuffer <> vbNullString
    stCode = LireBIT(BITIND)
    stCourant = Dictionnaire(BinToDec(stOld))
    If BinToDec(stCode) <= lgDictionnaire Then
        stCarTmp = Right$(Dictionnaire(BinToDec(stCode)), BITCHAR)
    Else
        stCarTmp = Right$(stCourant, BITCHAR)
    End If
' Augmente le dictionnaire
    lgDictionnaire = lgDictionnaire + 1
    If lgDictionnaire Mod 100 = 0 Then frmLZW.lblInfo3.Caption = "Taille Dictionnaire : " & lgDictionnaire & " (" & lgMaxDico & ")"
    Dictionnaire(lgDictionnaire) = stCarTmp + stCourant
    Call EcrireBIT(Dictionnaire(BinToDec(stCode)))
    stOld = stCode
    DoEvents
Loop
End Function


Dans une form appelé : frmLZW

Private Sub cmdGo_Click()
' Lance l'opération de compression/décompression

' Vérifie que le fichier source existe
If Dir(txtSource.Text) = vbNullString Then
    MsgBox "Le fichier source n'existe pas!", vbInformation, "Données incorrectes"
    txtSource.SetFocus
    Exit Sub
End If
' Vérifie que le fichier résultat n'existe pas
If Dir(txtResultat.Text) <> vbNullString Then
    MsgBox "Le fichier résultat existe déjà!", vbInformation, "Données incorrectes"
    txtResultat.SetFocus
    Exit Sub
End If

BITCHAR = CLng(txtBITCHAR.Text)
BITIND = CLng(txtBITIND.Text)

lblInfo4.Caption = "Début : " & Time
If optChoix(0).Value Then
' Lance la compression
    Call Start(True, txtSource.Text, txtResultat.Text)
Else
' Lance la décompression
    Call Start(False, txtSource.Text, txtResultat.Text)
End If
lblInfo4.Caption = lblInfo4.Caption & "/ Fin : " & Time
End Sub

Private Sub cmdQuitter_Click()
' Pour Quitter l'application
Unload Me
End Sub

Private Sub cmdSource_Click()
' Choix du fichier source, affichage de la fenêtre d'ouverture d'un
' fichier avec le contrôle CommonDialog
cdgFichier.DialogTitle = "Choix d'un fichier source"
cdgFichier.Flags = cdlOFNExplorer Or cdlOFNFileMustExist Or _
                   cdlOFNLongNames Or cdlOFNPathMustExist Or cdlOFNHideReadOnly
cdgFichier.CancelError = False
cdgFichier.Filter = "Tous les fichiers (*.*)|*.*"
cdgFichier.ShowOpen
txtSource.Text = cdgFichier.FileName
If optChoix(0).Value Then
    txtResultat.Text = txtSource.Text & ".lvb"
Else
    txtResultat.Text = Left$(txtSource.Text, Len(txtSource.Text) - 4)
End If
End Sub

Private Sub Form_Load()
' Initialisation des zones de la fenêtre
txtSource.Text = vbNullString
txtResultat.Text = vbNullString
optChoix(0).Value = True
lblInfo1.Caption = vbNullString
lblInfo2.Caption = vbNullString
lblInfo3.Caption = vbNullString
lblInfo4.Caption = vbNullString
End Sub

Private Sub lblTmp_Click(Index As Integer)

End Sub

Private Sub optChoix_Click(Index As Integer)
' Change le nom du fichier résultat lorsque la méthode change
If txtSource.Text <> vbNullString Then
    If optChoix(0).Value Then
        txtResultat.Text = txtSource.Text & ".lvb"
    Else
        txtResultat.Text = Left$(txtSource.Text, Len(txtSource.Text) - 4)
    End If
End If
End Sub
 

Conclusion

Pour le zip, maillé moi...
 

Commentaires et avis

signaler à un administrateur
Commentaire de mogador le 20/07/2002 02:15:29

je  me demand  coment puis je  convertire n'import quelles fichier  en binaire et le contraire c'est à dire  a parire  du  doneés binaire en récupere  le fichier origine

signaler à un administrateur
Commentaire de mehdibou le 23/11/2002 21:39:52

C'est bien utile ça :) mais j'ai une question, quels les types (evec les extensions, stp) de fichiers (je ne parle que de compression de fichiers binaires, pas de GIF, par exemple) qui utilisent cette compression ?
Et aussi s'il faut y rajouter qqch (des définitions de fichier.... spécifiques au type) aux fichiers créés avec ton code pour qu'ils soient parfaitement compatible.
Merci de me répondre par un message sur ce site ;)

Mehdibou

signaler à un administrateur
Commentaire de Steff le 26/11/2002 10:24:17

Pas mal, mais j'ai pas compris deux choses :
BITCHAR = CLng(txtBITCHAR.Text)
BITIND = CLng(txtBITIND.Text)

De plus, t'aurais pu nous mettre la frame, ca aurait eviter de la construire.

signaler à un administrateur
Commentaire de souini le 12/08/2004 00:01:38

je voulait toujours fair un prog pour compresser mais jetrouvais toujours ca difficile , tois tu la fais alors t'est fort bla bla bla 9/10

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Installation, compression, decompression [ par verbateam2002 ] Bonjour,Je cherche à faire un programme qui va decompresser automatiquement des fichiers (avec une architecture définie) vers un disque que l'on aura Compression/Decompression avec crc en VB.net [ par serey ] Bonjour,je souhaiterai compresser et decompresser des fichiers en vb et cela avec un crc pour v&#233;rifier l'integrit&#233; de mes fichiers. Comment winzip compression avertissement [ par Jomba ] lorsque je compresse toute une s&#233;rie de fichier avec un shell sur winzip, j'obtient &#224; la fin un message d'avertissement car l'un des fichier Compression [ par eldim ] Bonjour,Est-ce quelqu'un connait un programme zip qui v&#233;rifie si un fichier existe d&#233;ja dans un zip et compare les versions avant d'ajouter Compression Fichiers [ par yohann2004 ] Bonjour, Est-il possible de compresser un fichier directement à partir de vb.net ? Est-ce qu'une classe intégrée existe dans la version VB.net antéri COMPRESSION BASE SQL [ par maxRS ] Bonjour a tousJe voudrais connaitre le code en VB6 pour compresser une base SQL!Merci d'avanceBonne journée a tousmaxRS savoir l'état des bits d'un octet [ par nardelmouk ] souhaitant faire un petit algorithme de compression, j'avais vu que touts les lettres de l'alphabet ne prenaient pas plus de 5 bits d'un octet donc je Compression GZip .NET 2.0 [ par EvilGost ] Bonjour à tous les développeurs,je suis actuellement confronté à un problème. Pour mon appli, je dois compresser un répertoire complete, via GZip, int Attendre la fin de Compression avec Winrar sous VB2005 [ par ledebutant07 ] Bonjour,Je suis sous VB2005 ExpressJ'écris une appli qui compresse un répertoire et ses sous-répertoire avec WINRAR .Je cherche comment coder l'attent Compression image [ par nicodada ] Explication:-Une image de 128*64 pixels (picture box)-2 niveaux de couleurs (noir et blanc);(1;0)-2 fonctions possible pour enregistrer l'image    poi


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



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,390 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é.