Page 3 sur 4
Publié : lun. 03/déc./2007 22:07
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.
Publié : mar. 04/déc./2007 14:07
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).
Publié : mar. 04/déc./2007 16:11
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é

encore merci gnozal
Publié : mer. 05/déc./2007 14:17
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 ?
je m'arrete là d'abord !
Publié : jeu. 06/déc./2007 10:21
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 ?
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.
Publié : jeu. 06/déc./2007 15:00
par SpaceMan
Merci por ces informations !
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 ?
Publié : ven. 07/déc./2007 11:40
par gnozal
SpaceMan a écrit :Merci por ces informations !
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/
Publié : lun. 10/déc./2007 16:56
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
Publié : lun. 10/déc./2007 17:24
par gnozal
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.
Publié : mar. 11/déc./2007 13:31
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()
Publié : mar. 11/déc./2007 16:55
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
Publié : mar. 11/déc./2007 19:13
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"

Publié : ven. 14/déc./2007 19:23
par SpaceMan
Merci à vous

Publié : mer. 19/déc./2007 2:26
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é
Publié : mer. 19/déc./2007 14:29
par gnozal
case a écrit :est il possible de renommer un fichier dans une archive sans le décompresser/re-compresser ?
Non.