MODULE ZLIB - LA COMPRESSION FACILE... (OU DECOMPRESSION)

Signaler
Messages postés
589
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
-
Messages postés
745
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43871-module-zlib-la-compression-facile-ou-decompression

Messages postés
745
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015

Ca maaaaaaaaaaaaarche ! Merci pour ces réponses miracles :) !
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
ben vi ^^
il repart pas du contenu de la texbox... mais du tableau obtenu en compressant la donnée en entrée.

si tu branche la décompression su r ce qu'affiche CcTxtComp, je pense que tu vas pas obtenir le bon résultat en sortie (caractères invalides, supprimés ?)

suffit de faire :

Private Sub Command2_Click()
If LenB(CcTxtComp.Text) Then
mxbBufferIn = StrConv(CcTxtComp.Text, vbFromUnicode)
UncompressData mxbBufferIn, mxbBufferOut
CcTxtVerif.Text = StrConv(mxbBufferOut, vbUnicode)
Else
CcTxtVerif.Text = vbNullString
End If
If CcTxtVerif.Text <> CcTxtUncomp.Text Then
MsgBox "Erreur, le flux décompressé est différent du flux d'entrée.", vbExclamation
End If
End Sub
Messages postés
745
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015

merci de cette réponse super rapide, le code ressemble à ça là :

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Dim mxbBufferIn() As Byte
Dim mxbBufferOut() As Byte
Private Sub CcTxtComp_Change()
CcLblComp.Caption = "Longueur : " & Len(CcTxtComp.Text)
End Sub

Private Sub CcTxtVerif_Change()
CcLblVerif.Caption = "Longueur : " & Len(CcTxtVerif.Text)
End Sub

Private Sub Command1_Click()
CcLblUncomp.Caption = "Longueur : " & Len(CcTxtUncomp.Text)
If LenB(CcTxtUncomp.Text) Then
mxbBufferIn = StrConv(CcTxtUncomp.Text, vbFromUnicode)
CompressData mxbBufferIn, mxbBufferOut
CcTxtComp.Text = StrConv(mxbBufferOut, vbUnicode)
Else
CcTxtComp.Text = vbNullString
End If
End Sub

euh... lorsque je copie colle le résultat compressé, que je stope l'appli et que je la relance et que je colle le résultat compressé, il décompresse rien, c normal?

Private Sub Command2_Click()
If LenB(CcTxtComp.Text) Then
mxbBufferIn = mxbBufferOut
UncompressData mxbBufferIn, mxbBufferOut
CcTxtVerif.Text = StrConv(mxbBufferOut, vbUnicode)
Else
CcTxtVerif.Text = vbNullString
End If
' If CcTxtVerif.Text <> CcTxtUncomp.Text Then
' MsgBox "Erreur, le flux décompressé est différent du flux d'entrée.", vbExclamation
' End If
End Sub
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
dans Command2_Click
tu as xbBufferIn = xbBufferOut

mais là, ca ne va pas, tu parles de TON tableau xbBufferOut, déclaré deux lignes plus haut.

tu peux tenter:

Private mxbBufferIn() As Byte
Private mxbBufferOut() As Byte

Private Sub Command1_Click()
CcLblUncomp.Caption = "Longueur : " & Len(CcTxtUncomp.Text)
If LenB(CcTxtUncomp.Text) Then
mxbBufferIn = StrConv(CcTxtUncomp.Text, vbFromUnicode)
CompressData mxbBufferIn, mxbBufferOut
CcTxtComp.Text = StrConv(mxbBufferOut, vbUnicode)
Else
CcTxtComp.Text = vbNullString
End If
End Sub

Private Sub Command2_Click()
If LenB(CcTxtComp.Text) Then
mxbBufferIn = mxbBufferOut
UncompressData mxbBufferIn, mxbBufferOut
CcTxtVerif.Text = StrConv(mxbBufferOut, vbUnicode)
Else
CcTxtVerif.Text = vbNullString
End If
If CcTxtVerif.Text <> CcTxtUncomp.Text Then
MsgBox "Erreur, le flux décompressé est différent du flux d'entrée.", vbExclamation
End If
End Sub
Afficher les 14 commentaires