PureZIP 1.92

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

gnozal a écrit :
SpaceMan a écrit :j'ai testé le code mais l'évenement sur le bouton annuler ne lui parvient qu'à la fin de la compression.
Ah oui, si la compression et la gestion des évènements sont dans le même thread, il faut placer la gestion des évenements dans le callback.

Par exemple :

Code : Tout sélectionner

; Callback PureZIP 
Procedure PureZIP_CallbackC(File.s, PerCent.f) 
  ...
  ; Stop avec Echap
  If GetAsyncKeyState_(#VK_ESCAPE) & 32768 ; APPUI SUR ECHAP
    ProcedureReturn #True
  Endif
  ProcedureReturn #False
EndProcedure
là ça marche nickel :) mais l'appui sur la touche ECHAP n'arrete qu'un fichier ! mais je cherche encore.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

SpaceMan a écrit :là ça marche nickel :) mais l'appui sur la touche ECHAP n'arrete qu'un fichier ! mais je cherche encore.
If faut tester le retour de PureZIP_Archive_Compress().
Si c'est #PureZIP_CallbackStop, il faut sortir de ta boucle de compression de fichiers (Break).
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

gnozal a écrit :
SpaceMan a écrit :là ça marche nickel :) mais l'appui sur la touche ECHAP n'arrete qu'un fichier ! mais je cherche encore.
If faut tester le retour de PureZIP_Archive_Compress().
Si c'est #PureZIP_CallbackStop, il faut sortir de ta boucle de compression de fichiers (Break).
pourtant j'y ai pensé :P encore merci gnozal
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

Bonjour gnozal
j'ai quelques questions vraiment bêtes mais que je trouve importantes.
1. Quand dois-je utiliser ces constantes ?

Code : Tout sélectionner

#Z_DEFAULT_STRATEGY
#Z_BEST_SPEED
#Z_BEST_COMPRESSION
#Z_NEED_DICT
#Z_FILTERED
#Z_HUFFMAN_ONLY
2.quelle est la difference entre ces deux bouts de code ?

Code : Tout sélectionner

PureZIP_Archive_Create(destination$+nom_archive$, #APPEND_STATUS_CREATE)
PureZIP_Archive_Compress(SourceDir,#False)
PureZIP_Archive_Close()
et

Code : Tout sélectionner

PureZIP_Archive_Create(destination$+nom_archive$, #APPEND_STATUS_CREATE)
PureZIP_SetCompressionAlgorithm(#Z_BEST_COMPRESSION)
PureZIP_Archive_Compress(SourceDir,#False)
PureZIP_Archive_Close()
3. comment utiliser cette constante ?

Code : Tout sélectionner

#Z_BEST_SPEED
je m'arrete là d'abord !
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

SpaceMan a écrit :1. Quand dois-je utiliser ces constantes ?

Code : Tout sélectionner

#Z_DEFAULT_STRATEGY
#Z_BEST_SPEED
#Z_BEST_COMPRESSION
#Z_NEED_DICT
#Z_FILTERED
#Z_HUFFMAN_ONLY
Jamais avec PureZIP.
Ces constantes ne sont utiles que si tu veux programmer directement avec les fonctions ZLIB.
SpaceMan a écrit :2.quelle est la difference entre ces deux bouts de code ?

Code : Tout sélectionner

PureZIP_Archive_Create(destination$+nom_archive$, #APPEND_STATUS_CREATE)
PureZIP_Archive_Compress(SourceDir,#False)
PureZIP_Archive_Close()
et

Code : Tout sélectionner

PureZIP_Archive_Create(destination$+nom_archive$, #APPEND_STATUS_CREATE)
PureZIP_SetCompressionAlgorithm(#Z_BEST_COMPRESSION)
PureZIP_Archive_Compress(SourceDir,#False)
PureZIP_Archive_Close()
PureZIP_SetCompressionAlgorithm() n'a que 2 valeurs valides : #Z_NO_COMPRESSION (pas de compression (store)) et #Z_DEFLATED (compression avec deflate).
PureZIP utilise toujours #Z_BEST_COMPRESSION en association avec #Z_DEFLATED.
SpaceMan a écrit :3. comment utiliser cette constante ?

Code : Tout sélectionner

#Z_BEST_SPEED
je m'arrete là d'abord !
Ce n'est pas possible avec PureZIP qui utilise toujours #Z_BEST_COMPRESSION en association avec #Z_DEFLATED. La compression est si rapide avec ZLIB que #Z_BEST_SPEED (plus rapide mais moins efficace) n'a aucun intérêt à mon avis.
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

Merci por ces informations ! :D
Je voudrais bien pouvoir rajouter certaines fonctions à PureZip
Exemple:
Deflate 64(comme dans 7-Zip)
Mettre en pause(sur ce point point ça doit etre possible avec PureZip non ?)
Comment récuper le qu'il faut à PureZip pour terminer une compression ?
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

SpaceMan a écrit :Merci por ces informations ! :D
Je voudrais bien pouvoir rajouter certaines fonctions à PureZip
Exemple:
Deflate 64(comme dans 7-Zip)
Mettre en pause(sur ce point point ça doit etre possible avec PureZip non ?)
Comment récuper le qu'il faut à PureZip pour terminer une compression ?
Les fonctions de PureZIP suffisent amplement pour mon usage personnel, donc pas d'évolution révolutionnaire à attendre ...
Sinon :
Deflate 64 n'est pas supporté par ZLIB.
Pour le reste, voir la documentation (quasi-inexistante) de ZLIB : http://www.zlib.net/zlib_docs.html
Autre possibilité, utiliser info-zip : http://www.info-zip.org/
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

gnozal peux tu jeter un oeil sur le dernier code ?
la prgression generale fini même avant la compression normale des fichiers.
http://www.purebasic.fr/french/viewtopic.php?t=7167
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

SpaceMan a écrit :gnozal peux tu jeter un oeil sur le dernier code ?
la prgression generale fini même avant la compression normale des fichiers.
http://www.purebasic.fr/french/viewtopic.php?t=7167
PureZIP_SetCompressionCallback() définit un callback de compression (passe de 0 à 100% à chaque compression), pas de progression générale.
Je pense que c'est une mauvaise idée de mettre la progression dans le callback de compression, d'autant plus que le callback peut être appelé plusieurs fois avec PerCent.f = 100 avec les erreurs d'arrondis (99.99991, 99.99996 ...) : si PerCent.f = 100 ce n'est pas forcément la fin de la compression ! Si déjà, il vaut mieux tester le changement de nom de fichier (File.s).
Il vaut mieux compter au départ l'ensemble des fichiers à compresser puis incrémenter la barre de progression chaque fois qu'on traite un fichier.
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

gnozal a écrit :PureZIP_SetCompressionCallback() définit un callback de compression (passe de 0 à 100% à chaque compression), pas de progression générale.
Je pense que c'est une mauvaise idée de mettre la progression dans le callback de compression, d'autant plus que le callback peut être appelé plusieurs fois avec PerCent.f = 100 avec les erreurs d'arrondis (99.99991, 99.99996 ...)
Alors que me proposes-tu ? ou puis-je mettre ma procedure de progression générale ?
PS : je sais que la fonction PureZIP_SetProgressionCallback() ne s'utilise qu'avec les fonctions
-PureZIP_ExtractFiles()
-PureZIP_AddFiles()
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

SpaceMan a écrit :
gnozal a écrit :PureZIP_SetCompressionCallback() définit un callback de compression (passe de 0 à 100% à chaque compression), pas de progression générale.
Je pense que c'est une mauvaise idée de mettre la progression dans le callback de compression, d'autant plus que le callback peut être appelé plusieurs fois avec PerCent.f = 100 avec les erreurs d'arrondis (99.99991, 99.99996 ...)
Alors que me proposes-tu ? ou puis-je mettre ma procedure de progression générale ?
PS : je sais que la fonction PureZIP_SetProgressionCallback() ne s'utilise qu'avec les fonctions
-PureZIP_ExtractFiles()
-PureZIP_AddFiles()
Comme je le disais : "il vaut mieux compter au départ l'ensemble des fichiers à compresser puis incrémenter la barre de progression chaque fois qu'on traite un fichier."

Pseudo code :

Code : Tout sélectionner

TotalFichiers = CompteMesFichiersACompresser()
DéfinirBornesProgression(0, TotalFichiers)
While FichierSuivantACompresser()
  PureZIP_Archive_Compress(MonFichier, #True)
  Position + 1
  IncrementerProgression(Position)
Wend
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

gnozal a écrit :Comme je le disais : "il vaut mieux compter au départ l'ensemble des fichiers à compresser puis incrémenter la barre de progression chaque fois qu'on traite un fichier."
c'est d'ailleurs exactement ce que je fais dans "Backup" :)
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

Merci à vous :)
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Message par case »

est il possible de renommer un fichier dans une archive sans le décompresser/re-compresser ?

j'ai cherché dans la documentation de purezip mais rien vu de ce coté
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

case a écrit :est il possible de renommer un fichier dans une archive sans le décompresser/re-compresser ?
Non.
Répondre