la routine ZIP
@gnozal:
J'ai essayé "PureZip_test_3" et je t'assure qu'il y a un bug. J'ai compressé 2 jpg avec la routine de compression. Puis j'ai décompressé le zip créé avec ta routine de décompression : resultat, l'un des 2 jpg a été grignoté sur quelque %age !
J'ai essayé "PureZip_test_3" et je t'assure qu'il y a un bug. J'ai compressé 2 jpg avec la routine de compression. Puis j'ai décompressé le zip créé avec ta routine de décompression : resultat, l'un des 2 jpg a été grignoté sur quelque %age !
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
1) Sans exemple de code, je ne peux rien faire. Merci de poster un exemple simple et complet de code qui ne fonctionne pas.SPH a écrit :@gnozal:
J'ai essayé "PureZip_test_3" et je t'assure qu'il y a un bug. J'ai compressé 2 jpg avec la routine de compression. Puis j'ai décompressé le zip créé avec ta routine de décompression : resultat, l'un des 2 jpg a été grignoté sur quelque %age !
2) Il n'y a pas de corruption de fichiers avec PureZIP à ma connaissance. Les quelques erreurs signalées par les utilisateurs étaient dues à un bug de PB. En cas de problèmes, il faut utiliser les dernières beta librairies de PB4.00 à cause du bug ReadData()/Eof() et la dernière version de PureZIP. Je n'ai pas testé PB4.01!
Références :
- http://www.purebasic.fr/english/viewtop ... c&start=44
- http://www.purebasic.fr/english/viewtop ... highlight=
- http://www.purebasic-lounge.de/viewtopic.php?t=3530
- http://purebasic.forum-gratuit.com/view ... ht=purezip
Voici ton code :
Et mes 2 jpg (que tu devras dezipper) ->jpg.zip

Ta routine compresse donc mes 2 JPG puis les decompresse : le résultat est désastreux...
Code : Tout sélectionner
; -=====================================================================================-
; PureZIP test file 3
; -=====================================================================================-
;
Procedure PureZIP_CallbackForTest(file.s, PerCent.f)
Debug StrF(PerCent, 2) + "%"
EndProcedure
;
myFileinfo.PureZIP_FileInfo
PureZIP_SetProgressionCallback(@PureZIP_CallbackForTest())
;
; ---------------------------------------------------------------
;
racine$="c:\test\"
MyZIP.s = racine$+"PB_zip.zip"
MyZIPFile1.s = racine$+"01.jpg"
MyZIPFile2.s = racine$+"02.jpg"
MyZIPOutPut.s = racine$+"\PB_unzip\"
; Create & Compress
If PureZIP_Archive_Create(MyZIP, #APPEND_STATUS_CREATE)
Debug "--- Compress"
Debug PureZIP_Archive_Compress(MyZIPFile1, #False)
Debug PureZIP_Archive_Compress(MyZIPFile2, #False)
PureZIP_Archive_Close()
EndIf
; Read & get info
If PureZIP_Archive_Read(MyZIP)
Debug "--- Info"
ReturnValue.l = PureZIP_Archive_FindFirst() = #UNZ_OK
While ReturnValue = #UNZ_OK
Debug PureZIP_Archive_FileInfo(@myFileinfo)
Debug "Filename: " + myFileinfo\FileName
Debug "Compressed Size: " + Str(myFileinfo\CompressedSize)
Debug "Uncompressed Size: "+ Str(myFileinfo\unCompressedSize)
ReturnValue.l = PureZIP_Archive_FindNext()
Wend
PureZIP_Archive_Close()
EndIf
; Read & Extract
If PureZIP_Archive_Read(MyZIP)
; Extract files
Debug "--- Extraction"
ReturnValue.l = PureZIP_Archive_FindFirst() = #UNZ_OK
While ReturnValue = #UNZ_OK
Debug PureZIP_Archive_Extract(MyZIPOutPut, #True)
ReturnValue.l = PureZIP_Archive_FindNext()
Wend
; Locate
Debug "--- Locate"
If PureZIP_Archive_Locate(GetFilePart(MyZIPFile1)) = #UNZ_OK
Debug PureZIP_Archive_FileInfo(@myFileinfo)
Debug "Filename: " + myFileinfo\FileName
Debug "Compressed Size: " + Str(myFileinfo\CompressedSize)
Debug "Uncompressed Size: "+ Str(myFileinfo\unCompressedSize)
PureZIP_Archive_Close()
EndIf
EndIf

Ta routine compresse donc mes 2 JPG puis les decompresse : le résultat est désastreux...
J'ai testé ton code, avec tes images : aucun problème.
J'ai même effectué une comparaison binaire : les fichiers sont identiques.
Le ZIP créé est valide (testé avec 7-ZIP).Répertoire de C:\test
. <REP> 05/11/06 15:20 .
.. <REP> 05/11/06 15:20 ..
01 JPG 397 747 27/10/06 7:26 01.jpg
02 JPG 250 408 27/10/06 7:26 02.jpg
PB_ZIP ZIP 625 335 05/11/06 15:23 PB_zip.zip
PB_UNZIP <REP> 05/11/06 15:23 PB_unzip
3 fichier(s) 1 273 490 octets
Répertoire de C:\test\PB_unzip
. <REP> 05/11/06 15:23 .
.. <REP> 05/11/06 15:23 ..
01 JPG 397 747 27/10/06 7:26 01.jpg
02 JPG 250 408 27/10/06 7:26 02.jpg
2 fichier(s) 648 155 octets
Nombre total de fichiers listés :
5 fichier(s) 1 921 645 octets
5 répertoire(s) 28 629.50 Mo libre
J'ai même effectué une comparaison binaire : les fichiers sont identiques.
Donc voir mon point 2 du post ci-dessus.C:\test\PB_unzip>fc /b 01.jpg ..\01.jpg
Comparaison des fichiers 01.jpg et ..\01.jpg
FC: Aucune différence rencontrée
C:\test\PB_unzip>fc /b 02.jpg ..\02.jpg
Comparaison des fichiers 02.jpg et ..\02.jpg
FC: Aucune différence rencontrée
Voici les jpg que j'obtiens ->PB_unzip.zip

Matte les et de visu, tu comprendras qu'il y a un bug quelque part !
EDIT :

Matte les et de visu, tu comprendras qu'il y a un bug quelque part !
EDIT :
--- Compress
0
0
--- Info
0
Filename: 01.jpg
Compressed Size: 364254
Uncompressed Size: 385459
0
Filename: 02.jpg
Compressed Size: 240491
Uncompressed Size: 242216
--- Extraction
0
0
--- Locate
0
Filename: 01.jpg
Compressed Size: 364254
Uncompressed Size: 385459
Pas la peine de les "matter", le code fonctionne avec tes images sur 2 PC différents.SPH a écrit :Voici les jpg que j'obtiens ->PB_unzip.zip
Matte les et de visu, tu comprendras qu'il y a un bug quelque part !
C'est bien possible "qu'il y a un bug quelque part", mais apparemment pas dans PureZIP.
Quelle version de PB utilises-tu ?
Utilises-tu les dernières versions des librairies PB ?
Comme te l'as dit Gnozal, télécharge les beta libs de PB4, installes les et ça devrait fonctionner. J'ai eu le même problème avec des bmp il y a quelques temps. Tu peux aussi mettre à jour vers PB4.01, cela fonctionne aussi.il faut utiliser les dernières beta librairies de PB4.00
@Gnozal
J'ai constaté une incompatibilité de PureZip dans un code utilisant UsePNGImageDecoder() je reçois le message d'erreur suivant en retour.
POLINK:error:Symbol'_inflate_copyright' is multiply defined ('PureZIP_LIb_1.inftrees.obj' and 'ImagePluginPNG:inftrees.obj').
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Oui, ce problème est connu (déjà évoqué sur le forum anglais). PureZIP et ImagePluginPNG() utilisent la librairie statique ZLIB, d'où ces erreurs d'édition de liens (_inflate_copyright() est une fonction de ZLIB). Il faudrait probablement ajouter un paramètre à POLINK, mais je ne sais pas lequel (et Fred/Fr34k n'ont pas répondu à ce sujet).Jacobus a écrit :@Gnozal
J'ai constaté une incompatibilité de PureZip dans un code utilisant UsePNGImageDecoder() je reçois le message d'erreur suivant en retour.POLINK:error:Symbol'_inflate_copyright' is multiply defined ('PureZIP_LIb_1.inftrees.obj' and 'ImagePluginPNG:inftrees.obj').