[RESOLU] progression de AddPackFile

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

[RESOLU] progression de AddPackFile

Message par supercdfr »

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
Dernière modification par supercdfr le jeu. 26/juin/2014 9:09, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: progression de AddPackFile

Message par Backup »

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 :)
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: progression de AddPackFile

Message par supercdfr »

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é.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: progression de AddPackFile

Message par Backup »

je recommence au ralenti :mrgreen:

Resultat = PackEntrySize(#Archive,#PB_Packer_UncompressedSize)
ce parametre te permet de savoir combien de kilo fait ton fichier dans ton archive, s'il n'etait pas compressé !
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 :
Resultat = PackEntrySize(#Archive,#PB_Packer_CompressedSize) ; #PB_Packer_CompressedSize : Renvoie la taille compressée de l'entrée courante.
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 )

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
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: progression de AddPackFile

Message par falsam »

Dobro a écrit :ps: ici , il utilise un Callback a la place d'un timer
Ce callback fait référence à la fonction PackerCallback() qui n'existe plus dans les dernières versions de Pure Basic.

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.
Dobro a écrit :je recommence au ralenti :mrgreen:
Même au ralenti ça ne fonnctionna pas :mrgreen:
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%
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: progression de AddPackFile

Message par falsam »

supercdfr a écrit :Je compresse des fichiers de + de 3 Go
3 Go pour l'ensemble des fichiers ou 3 Go pour un seul fichier ?
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%
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: progression de AddPackFile

Message par supercdfr »

ça peut être 3go 1 fichier, voir plusieurs fichiers de 3 go dans le même pack
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: progression de AddPackFile

Message par falsam »

supercdfr a écrit :ça peut être 3go 1 fichier, voir plusieurs fichiers de 3 go dans le même pack
Je voulais te proposer d'utiliser AddPackMemory() qui me semble plus rapide que AddPackFile() mais là ..... il n'en est plus question.
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%
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: progression de AddPackFile

Message par supercdfr »

je crains que seuls les auteurs de PB puissent rajouter cette fonction. :cry:
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: progression de AddPackFile

Message par supercdfr »

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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: progression de AddPackFile

Message par Backup »

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.
Dobro a écrit :je recommence au ralenti :mrgreen:
Même au ralenti ça ne fonnctionna pas :mrgreen:

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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: progression de AddPackFile

Message par Backup »

je voulais faire un exemple , mais chez moi en 5.22

la fonction
File$=OpenFileRequester("load file to compress","c:\","*.*",#PB_Requester_MultiSelection )
ne marche pas ! pas de multiselection possible !
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: progression de AddPackFile

Message par Ar-S »

Dobro tu mets ton flag en "Pattern position"

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
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: progression de AddPackFile

Message par falsam »

Dobro a écrit :je voulais faire un exemple
Un bout de code avec la fonction AddPackFile(). Tu verras que le fichier final apparaît uniquement en fin de traitement.

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%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: progression de AddPackFile

Message par Backup »

...
Dernière modification par Backup le mar. 19/août/2014 9:30, modifié 6 fois.
Répondre