|
Started by Youn, Jan., 10 2006 9:40 AM - 1 reply |
| |
| | | |
|
| |
Posted on January, 10 2006 - 9:40 AM |
Pour pallier les défauts de la methode crypte ou compresse censées compresser des données contenues dans un chaine, voici les sources de 2 fonctions permettant de compresser et décompresser avec la dll open source zlib (www.zlib.net)
En effet, ni crypte ni compresse ne fonctionnent sur un fichier binaire qui aurait été chargé dans une chaine par fchargetexte par exemple.
(12 heures de galères avec windev pour pondre le code ci dessous, et oui ce ne sont pas les codes les plus long, les plus faciles a trouver)
PROCEDURE ZlibComp(pdata)
monresultat est une chaîne
tai,tai2 est un entier long sans signe tai=Taille(pdata) tai2=Taille(pdata)+(Taille(pdata)*0.1)+12 monresultat=Répète(Asc(0),tai2) //voir api pour comprendre, en fait c pour dimensionner correctement le pointeur en mémoire
SI API("zlib1.dll","compress2",&monresultat,&tai2,&pdata,tai,9)=0 ALORS SI tai2<tai ALORS //compression rentable ? RENVOYER Gauche(monresultat,tai2) SINON RENVOYER pdata //la meme chose si la compression n'est pas rentable FIN SINON RENVOYER pdata //on renvoie la meme chose si la compression a echouée FIN
PROCEDURE ZlibUncomp(pdata)
tai,tai2 est un entier long sans signe monresultat est une chaîne resapi est un entier
tai=Taille(pdata)
monresultat=Répète(Répète(" ",100),tai) //tampon de réception 10 fois plus gros (le repete emboité sert a améliorer le rendement de la fonction en CPU) tai20*tai
resapi=API("zlib1.dll","uncompress",&monresultat,&tai2,&pdata,tai) // decompression ok ALORS
SELON resapi CAS 0 : //ok RENVOYER Gauche(monresultat,tai2) CAS -3 : //data non valide pour la décompession, or corruption detected RENVOYER pdata//pdata car la chaine n'a peut etre pas été comprimée
AUTRE CAS : RENVOYER "ERROR" FIN |
| |
| |
| | | |
|
| | |
| |
Registered member 6 messages |
|
Posted on May, 13 2022 - 12:50 PM |
Bonjour,
Quel est le format de pdata svp ? Peut-on passer une chaine de caractères ?
Merci |
| |
| |
| | | |
|
| | | | |
| | |
|