la routine ZIP

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

@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 !

!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
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

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 !
1) Sans exemple de code, je ne peux rien faire. Merci de poster un exemple simple et complet de code qui ne fonctionne pas.
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
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Voici ton code :

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
Et mes 2 jpg (que tu devras dezipper) ->jpg.zip
Image

Ta routine compresse donc mes 2 JPG puis les decompresse : le résultat est désastreux...
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

J'ai testé ton code, avec tes images : aucun problème.
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
Le ZIP créé est valide (testé avec 7-ZIP).
J'ai même effectué une comparaison binaire : les fichiers sont identiques.
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
Donc voir mon point 2 du post ci-dessus.
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Voici les jpg que j'obtiens ->PB_unzip.zip
Image

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
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

SPH a écrit :Voici les jpg que j'obtiens ->PB_unzip.zip
Image
Matte les et de visu, tu comprendras qu'il y a un bug quelque part !
Pas la peine de les "matter", le code fonctionne avec tes images sur 2 PC différents.
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 ?
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

il faut utiliser les dernières beta librairies de PB4.00
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.

@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.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

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').
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).
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Ok, merci pour la précision.
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.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Le plus simple serait d'avoir "zlib.lib" dans le dossier compilers ou dans purelibraries, ou encore mieux une lib native zlib

Dri
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Avec l'update 4.01, ca fonctionne (mais en PB4, je persiste : cela ne fonctionnait pas)
Bref...

!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
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

SPH a écrit :Avec l'update 4.01, ca fonctionne (mais en PB4, je persiste : cela ne fonctionnait pas)
Bref...
Voir le point 2) de mon premier post :roll:
Répondre