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 !

Sujet : Décompression erreur -5 avec uncompress [ Algorithme / Compression & Cryptage ] (threadom)

samedi 28 octobre 2006 à 15:21:29 | Décompression erreur -5 avec uncompress

threadom

Salut,

hier j'ai mis en place ma routine pour compresser et je fesais les tests sur 4 byte et la pas de problème puis je me suis dis passons a 256 ... et la VLAN ...

VLAN en entré j'ai mes 256 byte tous a 1 ... et en sortie j'ai 23 byte ... tous a 1 mais bon 23 ...
Pour information sans la compression (Level = 0) tout ce passe bien ...

Voici mon code pour les tests :

Dim L_oZLib As New cZLib
Dim L_AbByte() As Byte
Dim i As Long
Dim tmpStr As String
   
    ReDim L_AbByte(255)
    For i = 0 To 255
        L_AbByte(i) = 1
    Next i
   
    tmpStr = ""
    For i = 0 To UBound(L_AbByte)
        If (i > 0) Then tmpStr = tmpStr & ":"
        tmpStr = tmpStr & CStr(L_AbByte(i))
    Next i
    Debug.Print "Avant Compression :" & UBound(L_AbByte) & ":" & tmpStr
    Debug.Print "Resultat de la Compression :" & L_oZLib.CompressByteArray(L_AbByte, 9)
   
    tmpStr = ""
    For i = 0 To UBound(L_AbByte)
        If (i > 0) Then tmpStr = tmpStr & ":"
        tmpStr = tmpStr & CStr(L_AbByte(i))
    Next i
    Debug.Print "Après Compression:" & UBound(L_AbByte) & ":" & tmpStr
    Debug.Print "Resultat de la Décompression :" & L_oZLib.DecompressByteArray(L_AbByte)
   
    tmpStr = ""
    For i = 0 To UBound(L_AbByte)
        If (i > 0) Then tmpStr = tmpStr & ":"
        tmpStr = tmpStr & CStr(L_AbByte(i))
    Next i
    Debug.Print "Après Décompression :" & UBound(L_AbByte) & ":" & tmpStr

et voila ma classe cZlib

Private Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
    ByRef P_AbDest As Byte, _
    ByRef P_AbSource As Byte, _
    ByVal P_lLenght As Long _
) As Long

Private Declare Function Compress Lib "zlib.dll" Alias "compress" ( _
    ByRef P_AbDest As Byte, _
    ByRef P_lDestLen As Long, _
    ByRef P_AbSrc As Byte, _
    ByVal P_lSrcLen As Long _
) As Long

Private Declare Function CompressWithLevel Lib "zlib.dll" Alias "compress2" ( _
    ByRef P_AbDest As Byte, _
    ByRef P_lDestLen As Long, _
    ByRef P_AbSrc As Byte, _
    ByVal P_lSrcLen As Long, _
    ByVal P_lLevel As Long _
) As Long

Private Declare Function UnCompress Lib "zlib.dll" Alias "uncompress" ( _
    ByRef P_AbDest As Byte, _
    ByRef P_lDestLen As Long, _
    ByRef P_AbSrc As Byte, _
    ByVal P_lSrcLen As Long _
) As Long

Public Function CompressByteArray(ByRef P_AbSrc() As Byte, ByVal P_lLevel As Long) As Long
Dim L_lSrcLenght As Long
Dim L_lDestLenght As Long
Dim L_AbDest() As Byte
Dim L_lResult As Long
Dim L_lMax As Long
   
    On Error GoTo CompressByteArray_Error

    ' Allocate Byte Array
    L_lSrcLenght = UBound(P_AbSrc) + 1
    L_lMax = ((((256 ^ 4) / 2) - 16) / 1.01)
    If (L_lSrcLenght > L_lMax) Then CompressByteArray = -1: Exit Function
    L_lDestLenght = (L_lSrcLenght * 1.01) + 12
    ReDim L_AbDest(L_lDestLenght)
   
    ' Compress Byte Array
    L_lResult = CompressWithLevel(L_AbDest(0), L_lDestLenght, P_AbSrc(0), L_lSrcLenght, P_lLevel)
   
    ' Truncate to compressed size
    ReDim P_AbSrc(L_lDestLenght - 1)
    CopyMemory P_AbSrc(0), L_AbDest(0), L_lDestLenght
   
    ' Return error code (if any)
    CompressByteArray = L_lResult

    Exit Function

CompressByteArray_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure CompressByteArray of Module de classe cZLib"
End Function

Public Function DecompressByteArray(ByRef P_AbSrc() As Byte) As Long
Dim L_lSrcLenght As Long
Dim L_lDestLenght As Long
Dim L_AbDest() As Byte
Dim L_lResult As Long
Dim L_lMax As Long

    On Error GoTo DecompressByteArray_Error

    ' Allocate Byte Array
    L_lSrcLenght = UBound(P_AbSrc) + 1
    L_lMax = ((((256 ^ 4) / 2) - 16) / 1.01)
    If (L_lSrcLenght > L_lMax) Then DecompressByteArray = -1: Exit Function
    L_lDestLenght = (L_lSrcLenght * 1.01) + 12
    ReDim L_AbDest(L_lDestLenght)
   
    ' Decompress data
    L_lResult = UnCompress(L_AbDest(0), L_lDestLenght, P_AbSrc(0), L_lSrcLenght)
   
    ' Truncate buffer to compressed size
    ReDim P_AbSrc(L_lDestLenght - 1)
    CopyMemory P_AbSrc(0), L_AbDest(0), L_lDestLenght
   
    ' Return error code (if any)
    DecompressByteArray = L_lResult

    Exit Function

DecompressByteArray_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure DecompressByteArray of Module de classe cZLib"
End Function


Quelqu'un aurais t'il une solution ... je suis encore en train de cherché sur le net ...

samedi 28 octobre 2006 à 15:46:24 | Re : Décompression erreur -5 avec uncompress

threadom

J'ai rien dit ... petite correction faut pas chercher la taille du fichier décompresser doit être redonner au moment de la décompression ca me plait moyen mais je vais le faire ...



Cette discussion est classé dans : byte, tmpstr, abbyte, absrc, abdest


Répondre à ce message

Sujets en rapport avec ce message

Passage d'un tableau de byte à une fonction encapsulé dans un ACtiveX Dll [ par novik ] J'aimerai pouvoir passer un tableau de Byte a ma fonction (Activex Dll)lors de l'appel j'ai une erreur Type Mismatch.Or lorsque j'appelle cette foncti Empêcher le dépassement de capacité [ par christophe ] Bonjour,Comment peut on empêcher le dépassement de capacité sur un numérique : Exemple d'un byte ou l'on affecte 300 ! Qql'un a une routine de vérific Comparaison de 2 fichiers... [ par MaTHieU ] Salut, pourriez vous m'aider à faire la comparaison de 2 fichiers en mettant dans une listbox les bytes qui sont différents de la manière suivantes... byte et offset [ par MaTHieU ] salut, je voudrai savoir comment connaitre l'offset d'un byte dans un fichier !Merci Comment récupérer l'adresse d'une variable de type long ou byte ou.... sous VB 4 ??? [ par TheMarz ] Pour utiliser certaines API win32, j'ai besoin de passer en paramètre des adresses de variables de type Long, Byte ou autre. Malheureusement, l'entrep pb dans les objets field [ par nicolas ] je lis ds les msdn que les valeurs associés au type des enregistrements sont :Constant Value Description adVarWChar 202 Null-terminated Unicode charac Lecture binaire SOS!!!! [ par couriousous ] Hello!!Je cherche depuis un moment pour savoire comment lire un fichier binaire depuis un nombre de byte X d'une longueur Y ou j'usquau byte ZIl me fa pb recuperation de l'adresse mac sous winNT [ par andrea ] Bonjour, J'ai un probleme lorsque j'essaie de recuperer l'adresse mac d'un ordinateur qui est sous NT cela me renvoie toujours la valeur suivant 0.0.0 .NET : Stocker un tableau de tableau de Byte dans un fichier [ par Scurio ] SalutEst-ce que quelqu'un à une idée pour stocker de façon simple un tableau de tableau de Byte dans un fichier pour pouvoir le récupérer par la suite Transtypage : Byte() ---> String [ par jockos ] Bonjour,Existe t-il une fontion VB toute faite qui permette de TRANSTYPER un tableau dynamique Binaire (Byte()) en une chaine de caractères (String).E


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,343 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é.