[RESOLU] progression de AddPackFile
[RESOLU] progression de AddPackFile
Bonjour,
existe-t-il un moyen de savoir ou en est la compression d'un fichier dans la commande AddPackFile ?
Je compresse des fichiers de + de 3 Go, et il est un peu embêtant de ne pas savoir ou il en est dans la compression du fichier.
j'utilise la compression zip
existe-t-il un moyen de savoir ou en est la compression d'un fichier dans la commande AddPackFile ?
Je compresse des fichiers de + de 3 Go, et il est un peu embêtant de ne pas savoir ou il en est dans la compression du fichier.
j'utilise la compression zip
Dernière modification par supercdfr le jeu. 26/juin/2014 9:09, modifié 1 fois.
Re: progression de AddPackFile
j'ai jamais utilisé cette lib cependant ...
tu connais la taille du fichier que tu compresses
grace a FileSize(NomFichier$)
tu peux connaitre la taille du fichier dans l'archive (tu dois verifier régulièrement l'emploi d'un timer est conseillé )
Resultat = PackEntrySize(#Archive,#PB_Packer_UncompressedSize)
donc tu disposes potentiellement de la différence de taille.... plus qu'a utiliser un
ProgressBarGadget(#Gadget, x, y, Largeur, Hauteur, Minimum, Maximum [, Options])
avec comme Maximum la taille du Fichier que tu compresse
comme Minimum =0
puis dans ton timer avec la vérification proposé plus haut
SetGadgetState(#Gadget, Etat)
etat etant le resultat de PackEntrySize() .... ça devrai le faire
en clair, chaque fois que ton timer se déclenche, tu vérifies la taille du fichier intégré dans ton archive grace a "Resultat = PackEntrySize(#Archive,#PB_Packer_UncompressedSize)"
que tu compares a la taille connu du fichier avant compression ... et tu met le progress bar a jour
tu connais la taille du fichier que tu compresses
grace a FileSize(NomFichier$)
tu peux connaitre la taille du fichier dans l'archive (tu dois verifier régulièrement l'emploi d'un timer est conseillé )
Resultat = PackEntrySize(#Archive,#PB_Packer_UncompressedSize)
donc tu disposes potentiellement de la différence de taille.... plus qu'a utiliser un
ProgressBarGadget(#Gadget, x, y, Largeur, Hauteur, Minimum, Maximum [, Options])
avec comme Maximum la taille du Fichier que tu compresse
comme Minimum =0
puis dans ton timer avec la vérification proposé plus haut
SetGadgetState(#Gadget, Etat)
etat etant le resultat de PackEntrySize() .... ça devrai le faire

en clair, chaque fois que ton timer se déclenche, tu vérifies la taille du fichier intégré dans ton archive grace a "Resultat = PackEntrySize(#Archive,#PB_Packer_UncompressedSize)"
que tu compares a la taille connu du fichier avant compression ... et tu met le progress bar a jour

Re: progression de AddPackFile
ca pourrais marcher, SAUF QUE je peut pas savoir la taille compresser avant (ce qui est normal).
A la rigueur, cela pourrait marcher si je savais ou il en est dans le fichier non compressé.
A la rigueur, cela pourrait marcher si je savais ou il en est dans le fichier non compressé.
Re: progression de AddPackFile
je recommence au ralenti
cette fonction lit le fichier DANS l'ARCHIVE FORCEMENT ! en dehors on s'en fout c'est avec FileSize()
si tu veux connaitre sa taille compressé , mais ça ne te sert a rien ici ce serai :
si grace a " PackEntrySize(#Archive,#PB_Packer_UncompressedSize)" ; tu connais la taille en cours de package , que ce fichier fait en décompressé (dans l'archive ) .. donc en cours d'ecriture grace au Timer ...
, alors tu peux la comparer avec la taille du fichier (avant compression ) a l'exterieur de l'archive
d'apres la Doc, je comprends que la fonction
Resultat = PackEntrySize(#Archive,#PB_Packer_UncompressedSize
renvoi la taille du fichier qui est present dans l'archive , donc compréssé ... mais cette taille est renvoyé comme si le fichier n'avait pas été compressé !
ça peut servir par exemple a vérifier si on a la place sur le disque pour décompresser l'archive .....
comme ton fichier est en cours de compression , je suppose (a Vérifier ), que tu peux vérifier la taille dans l'archive pendant son écriture grace a un timer ou un Thread
sinon , je ne vois pas a quoi serviraient ces 2 paramétres ......
ps: ici , il utilise un Callback a la place d'un timer .... mais le principe est le meme
http://forums.purebasic.com/english/vie ... b02ddbd329

ce parametre te permet de savoir combien de kilo fait ton fichier dans ton archive, s'il n'etait pas compressé !Resultat = PackEntrySize(#Archive,#PB_Packer_UncompressedSize)
cette fonction lit le fichier DANS l'ARCHIVE FORCEMENT ! en dehors on s'en fout c'est avec FileSize()
si tu veux connaitre sa taille compressé , mais ça ne te sert a rien ici ce serai :
l'entré courante c'est le fichier que tu es en train de compresser ; (ou que tu as compressé) ... celui qui se trouve donc DANS l'archive ....en entier (ou pas )Resultat = PackEntrySize(#Archive,#PB_Packer_CompressedSize) ; #PB_Packer_CompressedSize : Renvoie la taille compressée de l'entrée courante.
si grace a " PackEntrySize(#Archive,#PB_Packer_UncompressedSize)" ; tu connais la taille en cours de package , que ce fichier fait en décompressé (dans l'archive ) .. donc en cours d'ecriture grace au Timer ...
, alors tu peux la comparer avec la taille du fichier (avant compression ) a l'exterieur de l'archive
d'apres la Doc, je comprends que la fonction
Resultat = PackEntrySize(#Archive,#PB_Packer_UncompressedSize
renvoi la taille du fichier qui est present dans l'archive , donc compréssé ... mais cette taille est renvoyé comme si le fichier n'avait pas été compressé !
ça peut servir par exemple a vérifier si on a la place sur le disque pour décompresser l'archive .....
comme ton fichier est en cours de compression , je suppose (a Vérifier ), que tu peux vérifier la taille dans l'archive pendant son écriture grace a un timer ou un Thread
sinon , je ne vois pas a quoi serviraient ces 2 paramétres ......
ps: ici , il utilise un Callback a la place d'un timer .... mais le principe est le meme
http://forums.purebasic.com/english/vie ... b02ddbd329
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: progression de AddPackFile
Ce callback fait référence à la fonction PackerCallback() qui n'existe plus dans les dernières versions de Pure Basic.Dobro a écrit :ps: ici , il utilise un Callback a la place d'un timer
Ce que tu expliques ne peut pas fonctionner durant la phase de compression des données car durant cette phase, le fichier compressé n'existe pas.
Même au ralenti ça ne fonnctionna pasDobro a écrit :je recommence au ralenti![]()

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: progression de AddPackFile
3 Go pour l'ensemble des fichiers ou 3 Go pour un seul fichier ?supercdfr a écrit :Je compresse des fichiers de + de 3 Go
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: progression de AddPackFile
ça peut être 3go 1 fichier, voir plusieurs fichiers de 3 go dans le même pack
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: progression de AddPackFile
Je voulais te proposer d'utiliser AddPackMemory() qui me semble plus rapide que AddPackFile() mais là ..... il n'en est plus question.supercdfr a écrit :ça peut être 3go 1 fichier, voir plusieurs fichiers de 3 go dans le même pack
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: progression de AddPackFile
je crains que seuls les auteurs de PB puissent rajouter cette fonction. 

Re: progression de AddPackFile
par contre, j'ai l’impression qu'il y a un bug.
Impossible de rajouter des fichiers de 4 GO et +. et la doc ne parle pas d'une limite.
Impossible de rajouter des fichiers de 4 GO et +. et la doc ne parle pas d'une limite.
Re: progression de AddPackFile
falsam a écrit :Ce que tu expliques ne peut pas fonctionner durant la phase de compression des données car durant cette phase, le fichier compressé n'existe pas.Même au ralenti ça ne fonnctionna pasDobro a écrit :je recommence au ralenti![]()
bien sur que si ! durant la compression ton fichier s'ecrit bien ...
on est pas dans un openfile qui attends le Close pour ecrire le fichier .... du moins il me semble j'ai pas testé cette lib
Re: progression de AddPackFile
je voulais faire un exemple , mais chez moi en 5.22
la fonction
la fonction
ne marche pas ! pas de multiselection possible !File$=OpenFileRequester("load file to compress","c:\","*.*",#PB_Requester_MultiSelection )
Re: progression de AddPackFile
Dobro tu mets ton flag en "Pattern position"
Manque le ,0
Manque le ,0
Code : Tout sélectionner
File$=OpenFileRequester("load file to compress","c:\","*.*",0,#PB_Requester_MultiSelection )
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: progression de AddPackFile
Un bout de code avec la fonction AddPackFile(). Tu verras que le fichier final apparaît uniquement en fin de traitement.Dobro a écrit :je voulais faire un exemple
Comme tu es observateur tu vas vite t'apercevoir qu'il y a d'abord création d'un fichier provisoire qui porte le même nom que le fichier final suivi d'une extension aléatoire.
Exemple si ton fichier final se nomme "test.zip", alors tu auras un fichier"test.zip.a05280" puis à la fin du traitement, tu auras ton fichier final "test.zip".
Code : Tout sélectionner
EnableExplicit
Enumeration
#File
#FilePack
EndEnumeration
Global FileName.s, FilePackName.s = "FilePack.zip", Length
FileName = OpenFileRequester("Select files", "*.*", "*.*", 0, #PB_Requester_MultiSelection)
If FileName <> ""
UseZipPacker()
If CreatePack(#FilePack, FilePackName)
While FileName
If ReadFile(#File, Filename)
Length = Lof(#File)
Debug "Fichier " + GetFilePart(FileName) + " - " + Str(Length)+" bytes lus"
AddPackFile(#FilePack, FileName, GetFilePart(FileName))
CloseFile(#File)
EndIf
Filename = NextSelectedFileName()
Wend
ClosePack(#FilePack)
Else
Debug "Erreur lors de la création du fichier compressé"
EndIf
Else
Debug "Aucun fichier sélectionné"
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: progression de AddPackFile
...
Dernière modification par Backup le mar. 19/août/2014 9:30, modifié 6 fois.