là ça marche nickelgnozal a écrit :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.SpaceMan a écrit :j'ai testé le code mais l'évenement sur le bouton annuler ne lui parvient qu'à la fin de la compression.
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
PureZIP 1.92
pourtant j'y ai penségnozal a écrit :If faut tester le retour de PureZIP_Archive_Compress().SpaceMan a écrit :là ça marche nickelmais l'appui sur la touche ECHAP n'arrete qu'un fichier ! mais je cherche encore.
Si c'est #PureZIP_CallbackStop, il faut sortir de ta boucle de compression de fichiers (Break).
Bonjour gnozal
j'ai quelques questions vraiment bêtes mais que je trouve importantes.
1. Quand dois-je utiliser ces constantes ?
2.quelle est la difference entre ces deux bouts de code ?
et
3. comment utiliser cette constante ?
je m'arrete là d'abord !
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_ONLYCode : Tout sélectionner
PureZIP_Archive_Create(destination$+nom_archive$, #APPEND_STATUS_CREATE)
PureZIP_Archive_Compress(SourceDir,#False)
PureZIP_Archive_Close()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()Code : Tout sélectionner
#Z_BEST_SPEEDJamais avec PureZIP.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
Ces constantes ne sont utiles que si tu veux programmer directement avec les fonctions ZLIB.
PureZIP_SetCompressionAlgorithm() n'a que 2 valeurs valides : #Z_NO_COMPRESSION (pas de compression (store)) et #Z_DEFLATED (compression avec deflate).SpaceMan a écrit :2.quelle est la difference entre ces deux bouts de code ?etCode : Tout sélectionner
PureZIP_Archive_Create(destination$+nom_archive$, #APPEND_STATUS_CREATE) PureZIP_Archive_Compress(SourceDir,#False) PureZIP_Archive_Close()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 utilise toujours #Z_BEST_COMPRESSION en association avec #Z_DEFLATED.
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 a écrit :3. comment utiliser cette constante ?je m'arrete là d'abord !Code : Tout sélectionner
#Z_BEST_SPEED
Les fonctions de PureZIP suffisent amplement pour mon usage personnel, donc pas d'évolution révolutionnaire à attendre ...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 ?
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/
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
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.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
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.
Alors que me proposes-tu ? ou puis-je mettre ma procedure de progression générale ?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 ...)
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."SpaceMan a écrit :Alors que me proposes-tu ? ou puis-je mettre ma procedure de progression générale ?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 ...)
PS : je sais que la fonction PureZIP_SetProgressionCallback() ne s'utilise qu'avec les fonctions
-PureZIP_ExtractFiles()
-PureZIP_AddFiles()
Pseudo code :
Code : Tout sélectionner
TotalFichiers = CompteMesFichiersACompresser()
DéfinirBornesProgression(0, TotalFichiers)
While FichierSuivantACompresser()
PureZIP_Archive_Compress(MonFichier, #True)
Position + 1
IncrementerProgression(Position)
Wend