Page 1 sur 1

impossible d'afficher les fichiers du zip

Publié : jeu. 13/sept./2007 17:26
par SpaceMan
Bonjour à tous
je ramène un code qui refuse de fonctionner correctement.
Le 1er problème se trouve dans la procedure Ouvrir_Zip(filename.s)(impossible d'afficher correctement les fichiers) par contre quand je décommente le SetGadgetText(#ExplorerList_Principale,String) cela m'affiche simplement un seul fichier

Le 2nd probleme concerne la lib pureZip de Gnozal(quelq'un peut confirmer ?)
utiliser la fenetre de progression ne marche pas en mode fenetré mais fonction bien en mode console 8O

Code : Tout sélectionner

;Auteur: SpaceMan 
;version: Démo 
;User Lib: pureZip (gnozal)
;{- Enumerations 
;{ Windows 
Enumeration 
  #Window_0 
  #Window_2 
  #Progression 
EndEnumeration 
;} 
;{ Menu bars 
Enumeration 
  #Menu_Window_0 
EndEnumeration 
;{ Menu items 
Enumeration 
  #Menu_Window_0_0_ExtraireUneArchive 
  #Menu_Window_0_0_OuvrirUneArchive 
  #Menu_Window_0_1_TesterUneArchive 
  #Menu_Window_0_2_MotDePasse 
  #Menu_Window_0_3_Configuration 
  #Menu_Window_0_4_Quitter 
  #Menu_Window_0_5_Compresser 
  #Menu_Window_0_6_CompresserAvecPassword 
  #Menu_Window_0_7_Decompresser 
  #Menu_Window_0_8_SupprimerPassword 
  #Menu_Window_0_9_TutorialPCDEVZIP 
  #Menu_Window_0_11_APropos 
EndEnumeration 
;} 
;{ Status bars 
Enumeration 
  #StatusBar_Window_0 
EndEnumeration 
;} 
;{ Gadgets 
Enumeration 
  #ExplorerComboGadget 
  #ExplorerList_1 
  #StatusBar 
  #compress 
  #decompress 
  #Text_10 
  #String_9 
  #Text_18 
  #String_17 
  #Button_12 
  #Frame3D_16 
  #Text_12 
  #ComboBox_13 
  #Text_14 
  #ComboBox_15 
  #Frame3DGadget_245 
  #TextGadget_244 
  #StringGadget_246 
  #TextGadget_243 
  #StringGadget_247 
  #CheckBoxGadget_242 
  #CheckBoxGadget_241 
  #ButtonGadget_240 
  #ButtonGadget_239 
  #ProgressBar
  #ProgressBar2
  #Txt1:#Txt2
  #Button_4
EndEnumeration 

Global Disk$ 
Disk$ = "C:\" 
Global Window_0, ProgressBar_Compression, Text_FileProcessed, Text_1, ProgressBar_Progression, Bt_Annuler
Global nom_archive.s,destination$,pwd$,pwd2$, repfichier$, *ZoneMemoire
;} 
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 170, 90, 652, 470, "Compressor Beta 210", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
    CreateGadgetList(WindowID(#Window_0))
    If CreateMenu(#Menu_Window_0, WindowID(#Window_0))
      MenuTitle("Menu")
      MenuItem(#Menu_Window_0_0_OuvrirUneArchive,"Ouvrir Archive")
      MenuItem(#Menu_Window_0_0_ExtraireUneArchive, "Extraire Archive")
      MenuItem(#Menu_Window_0_1_TesterUneArchive, "Tester Archive")
      MenuItem(#Menu_Window_0_2_MotDePasse, "Mot de passe")
      MenuItem(#Menu_Window_0_3_Configuration, "Configuration")
      MenuBar()
      MenuItem(#Menu_Window_0_4_Quitter, "Quitter")
      MenuTitle("Commandes")
      MenuItem(#Menu_Window_0_5_Compresser, "Compresser")
      MenuItem(#Menu_Window_0_6_CompresserAvecPassword, "Compresser avec Password")
      MenuBar()
      MenuItem(#Menu_Window_0_7_Decompresser, "Décompresser")
      MenuItem(#Menu_Window_0_8_SupprimerPassword, "Supprimer Password")
      MenuTitle("Aide")
      MenuItem(#Menu_Window_0_9_TutorialPCDEVZIP, "Tutorial(PC-DEV ZIP)")
      MenuItem(#Menu_Window_0_11_APropos, "A Propos")
      
      ExplorerComboGadget(#ExplorerComboGadget, 1, 02, 650, 200, Disk$, #PB_Explorer_Editable)
      ExplorerListGadget(#ExplorerList_1, 0, 25, 651, 405, Disk$, #PB_Explorer_MultiSelect|#PB_Explorer_AutoSort);|#PB_Explorer_FullRowSelect)
      SetGadgetItemAttribute(#ExplorerList_1, 0,#PB_Explorer_ColumnWidth, 347)
      ;CreateStatusBar(#StatusBar_Window_0, WindowID(Window_0))
      ; Gadget Resizing
      PureRESIZE_SetGadgetResize(#ExplorerList_1, 1, 1, 1, 1)
      PureRESIZE_SetGadgetResize(#ExplorerComboGadget, 1, 1, 1, 1)
      CreateStatusBar(#StatusBar, WindowID(0))
      AddStatusBarField(175)
      AddStatusBarField(480)
      StatusBarText(#StatusBar, 2, "Area 3", #PB_StatusBar_Right | #PB_StatusBar_Raised)
    EndIf
  EndIf
EndProcedure
  
Procedure OpenWindow_Archive() 
  If OpenWindow(#Window_2, 587, 257, 353, 350, "Add to Zip", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered) 
    SmartWindowRefresh(#Window_2, 1) 
    StickyWindow(#Window_2, 1) 
    If CreateGadgetList(WindowID(#Window_2)) 
      TextGadget(#Text_10, 7, 21, 80, 15, "Archive name") 
      StringGadget(#String_9, 92, 16, 221, 20, "") 
      TextGadget(#Text_18, 8, 55, 65, 15, "Destination") 
      StringGadget(#String_17, 92, 50, 220, 20, "") 
      ButtonGadget(#Button_12, 318, 51, 25, 20, "...") 
      
      Frame3DGadget(#Frame3D_16, 10, 85, 330, 85, "Compression Options") 
      TextGadget(#Text_12, 25, 105, 90, 15, "Archive Format") 
      ComboBoxGadget(#ComboBox_13, 220, 100, 105, 100):DisableGadget(#ComboBox_13,1) 
      AddGadgetItem(#ComboBox_13, 0, "Zip") 
      AddGadgetItem(#ComboBox_13, 1, "Arj") 
      AddGadgetItem(#ComboBox_13, 2, "Ace") 
      SetGadgetState(#ComboBox_13, 0) 
      
      TextGadget(#Text_14, 25, 135, 110, 15, "Type of compresssion") 
      ComboBoxGadget(#ComboBox_15, 220, 135, 105, 100):DisableGadget(#ComboBox_15,1) 
      AddGadgetItem(#ComboBox_15, 0, "Normal") 
      AddGadgetItem(#ComboBox_15, 1, "Deflate") 
      SetGadgetState(#ComboBox_15, 0) 
      
      Frame3DGadget(#Frame3DGadget_245, 10, 182, 330, 135, "Password") 
      TextGadget(#TextGadget_244, 20, 200, 118, 15, "Enter Password") 
      StringGadget(#StringGadget_246, 165, 235, 160, 20, "", #PB_String_Password) 
      TextGadget(#TextGadget_243, 20, 240, 128, 15, "Confirm Password") 
      StringGadget(#StringGadget_247, 165, 199, 160, 20, "", #PB_String_Password) 
      CheckBoxGadget(#CheckBoxGadget_242, 20, 269, 140, 15, "Show Password") 
      CheckBoxGadget(#CheckBoxGadget_241, 20, 294, 180, 15, "Crypt files name"):DisableGadget(#CheckBoxGadget_241,1) 
      ButtonGadget(#ButtonGadget_240, 218, 324, 60, 20, "OK") 
      ButtonGadget(#ButtonGadget_239, 288, 325, 54, 19, "cancel") 
      
    EndIf 
  EndIf 
EndProcedure 
  
Procedure AjouterAZip(Path.s) 
  Protected dir.l, entry.s, Rep.s, chaine.s
  If Not Right(Path, 1) = "\" : Path+"\" : EndIf
  dir = ExamineDirectory(#PB_Any, Path, "")
  If dir
    ;chaine = RemoveString(Path, Rep)
    ;Debug chaine
    While NextDirectoryEntry(dir)
      entry = DirectoryEntryName(dir)
      If entry = "." Or entry = ".."
        Continue
      ElseIf DirectoryEntryType(dir) = #PB_DirectoryEntry_File
        PureZIP_Archive_Compress(Path+entry,#True)
      Else
        AjouterAZip(Path+entry+"\")
    EndIf : Wend
    FinishDirectory(dir)
  EndIf
EndProcedure

Procedure CompresserArchive() 
  CloseWindow(#Window_2)
  If GetGadgetState(#ExplorerList_1) > -1 
    nom_archive$ = PeekS(*ZoneMemoire) 
    ; Debug nom_archive$ 
    If nom_archive$ And destination$ 
      PureZIP_Archive_Create(destination$+nom_archive$, #APPEND_STATUS_CREATE)
      dernier_element=CountGadgetItems(#ExplorerList_1)-1  
       For position_element=0 To dernier_element 
        etat_gadget=GetGadgetItemState(#ExplorerList_1,position_element)
         If etat_gadget & #PB_Explorer_Selected 
           If etat_gadget & #PB_Explorer_File
            SourceDir$ = GetGadgetText(#ExplorerList_1) + GetGadgetItemText(#ExplorerList_1,position_element, 0)
             PureZIP_Archive_Compress(SourceDir$,#False)
          ElseIf etat_gadget & #PB_Explorer_Directory ; ... un répertoire
            SourceDir$ = GetGadgetText(#ExplorerList_1)+ GetGadgetItemText(#ExplorerList_1,position_element, 0)
            SetCurrentDirectory_(@SourceDir$)
            AjouterAZip(SourceDir$) 
          EndIf 
        EndIf  
      Next 
      PureZIP_Archive_Close()
    Else 
      MessageRequester("Compressor","Please check archive name and destination !",#MB_ICONERROR) 
    EndIf 
  Else 
    MessageRequester("Compressor","Please select files",#MB_ICONERROR) 
  EndIf
EndProcedure 

Procedure Ouvrir_Zip(filename.s)
  ZIP_Handle_Lecture = PureZIP_Archive_Read(filename)
  If ZIP_Handle_Lecture
    Nb_fichiers = PureZIP_GetFileCount(filename)-1
    For i = 0 To Nb_fichiers;:Debug Nb_fichiers
      PureZIP_GetFileInfo(filename,i , @myFileinfo.PureZIP_FileInfo)
      String.s = PeekS(@myFileinfo\filename)
      Debug String
      SetGadgetItemText(#ExplorerList_1,i,String, 0);affiche simplement les dossiers contenant le nom des fichiers
      ;SetGadgetText(#ExplorerList_Principale,String);affiche simplement un seul fichier
    Next
  EndIf
EndProcedure

Procedure ouvrir_Archive()
  Filtre$ = "Rar(*.rar)|*.rar;*.ZIP;*.tar;*.cab|7-zip(*.7-zip)|*.7zip|Arj(*.arj)|*.arj|Ace(*.ace)|*.ace|Toutes les archives (*.*)|*.*"
  Filtre  = 0
  NewFilename.s = OpenFileRequester("Sélectionner un archive", FichierParDefaut$, Filtre$, Filtre)
  If NewFilename <> ""
    Ouvrir_Zip(NewFilename)
    SetGadgetText(#ExplorerComboGadget,NewFilename)
  EndIf
EndProcedure
 
Procedure Open_Window() 
  Window_0 = OpenWindow(#PB_Any, 382, 285, 315, 128, "Compressor",#PB_Window_TitleBar | #PB_Window_ScreenCentered) 
  If Window_0 : StickyWindow(Window_0, 1) 
    If CreateGadgetList(WindowID(Window_0)) 
      ProgressBar_Compression = ProgressBarGadget(#PB_Any, 5, 25, 305, 20, 0, 100) 
      Text_FileProcessed = TextGadget(#PB_Any, 74, 4, 150, 15, "Files Extraction...", #PB_Text_Center) 
      Text_1 = TextGadget(#PB_Any, 100, 58, 100, 15, "Progression...", #PB_Text_Center) 
      ProgressBar_Progression = ProgressBarGadget(#PB_Any, 5, 77, 305, 20, 0, 100) 
      Bt_Annuler = ButtonGadget(#Button_4, 240, 106, 70, 18, "Cancel") 
    EndIf 
  EndIf 
EndProcedure
  
Procedure Close_Window() 
  CloseWindow(Window_0) 
EndProcedure 

Procedure PureZIP_CallbackP(File.s, PerCent.f)
  SetGadgetState(ProgressBar_Progression, PerCent.f)
  While WindowEvent() : Wend
EndProcedure

Procedure PureZIP_CallbackC(File.s, PerCent.f)
  SetGadgetText(Text_FileProcessed, GetFilePart(File))
  SetGadgetState(ProgressBar_Compression, PerCent.f)
  While WindowEvent() : Wend
EndProcedure
; 
;myFileinfo.PureZIP_FileInfo                          ;fonctionne pas bien
;PureZIP_SetProgressionCallback(@PureZIP_CallbackP()) ;fonctionne pas bien
;PureZIP_SetCompressionCallback(@PureZIP_CallbackC()) ;fonctionne pas bien

Procedure statusbar1() 
  Protected  Nombre_Elements 
  Nombre_Elements = CountGadgetItems(#ExplorerList_1) 
  
  If CreateStatusBar(#StatusBar_Window_0, WindowID(#Window_0)) 
    AddStatusBarField(175) 
    AddStatusBarField(480) 
    StatusBarText(#StatusBar_Window_0,0, Str(Nombre_Elements) + " "+"élément(s)") 
  EndIf
EndProcedure 

 
OpenWindow_Window_0() 
statusbar1() 
Repeat 
  Select WaitWindowEvent() 
    
    ; /////////////////// 
    Case #PB_Event_Menu 
      Select EventMenu() 
        Case #Menu_Window_0_5_Compresser 
          If GetGadgetState(#ExplorerList_1) > -1 
            OpenWindow_Archive() : SetGadgetText(#String_9,"Archive.zip") 
          Else:MessageRequester("Compressor","Please select files !",#MB_ICONERROR)  
          EndIf 
          
        Case #Menu_Window_0_7_Decompresser 
        Case #Menu_Window_0_0_ExtraireUneArchive
        Case #Menu_Window_0_0_OuvrirUneArchive :ouvrir_Archive()
        Case #Menu_Window_0_1_TesterUneArchive 
        Case #Menu_Window_0_2_MotDePasse
        Case #Menu_Window_0_3_Configuration
        Case #Menu_Window_0_4_Quitter:Break 
      EndSelect  
      
      ; //////////////////////
    Case #PB_Event_Gadget 
      EventGadget = EventGadget() 
      EventType = EventType() 
      Select EventGadget() 
        
        Case #ExplorerComboGadget 
          SetGadgetText(#ExplorerList_1, GetGadgetText(#ExplorerComboGadget)) 
          If  EventType() = #PB_EventType_Change 
            Nombre_Elements = CountGadgetItems(#ExplorerList_1) 
          StatusBarText(#StatusBar_Window_0,0, Str(Nombre_Elements) + " élément(s)") :EndIf 
          
        Case #ButtonGadget_239 
          CloseWindow(#Window_2) 
          
        Case #ButtonGadget_240 ;archivage des fichiers
          nom_archive$ = GetGadgetText(#String_9) 
          destination$ = GetGadgetText(#String_17) 
          pwd$ = GetGadgetText(#StringGadget_246) 
          pwd2$ = GetGadgetText(#StringGadget_246) 
          
          *ZoneMemoire = AllocateMemory(2500) 
          *Pointeur = *ZoneMemoire
          PokeS(*ZoneMemoire, nom_archive$)
          
          If  nom_archive$ <> "" And destination$ <> "" And pwd$ = pwd2$ And pwd$ = "" And pwd2$ = "" 
            CloseWindow(#Window_2): SetWindowState(#Window_0,#PB_Window_Minimize)
            Open_Window(): CompresserArchive():FreeMemory(*ZoneMemoire):Close_Window()
            SetWindowState(#Window_0,#PB_Window_Normal)
          EndIf 
          
        Case #ExplorerList_1 
          If  EventType() = #PB_EventType_LeftDoubleClick 
          SetGadgetText(#ExplorerComboGadget,GetGadgetText(#ExplorerList_1)): EndIf 
        Case Bt_Annuler
          End
      EndSelect 
      
      ; //////////////////////    
    Case #PB_Event_CloseWindow 
      EventWindow = EventWindow() 
      If EventWindow = #Window_0 
        Break 
      ElseIf EventWindow = #Window_2 
        CloseWindow(#Window_2) 
      EndIf 
  EndSelect 
ForEver

Publié : ven. 14/sept./2007 8:53
par gnozal
Voici PureZIP_TEST_MiniZIP.pb (à l'origine en mode console) rapidement modifié pour être en mode GUI.

Code : Tout sélectionner

Global Window_0, ProgressBar_Compression, Text_FileProcessed, Text_1, ProgressBar_Progression
;
Procedure Open_Window()
  Window_0 = OpenWindow(#PB_Any, 58, 179, 251, 105, "MiniZIP",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  If Window_0
    If CreateGadgetList(WindowID(Window_0))
      ProgressBar_Compression = ProgressBarGadget(#PB_Any, 0, 30, 250, 20, 0, 100)
      Text_FileProcessed = TextGadget(#PB_Any, 0, 10, 250, 20, "Searching for files ...", #PB_Text_Center)
      Text_1 = TextGadget(#PB_Any, 0, 60, 250, 20, "Progression", #PB_Text_Center)
      ProgressBar_Progression = ProgressBarGadget(#PB_Any, 0, 80, 250, 20, 0, 100)
    EndIf
  EndIf
EndProcedure
Procedure Close_Window()
  CloseWindow(Window_0)
EndProcedure  
;
Procedure PureZIP_CallbackC(File.s, PerCent.f)
  SetGadgetText(Text_FileProcessed, GetFilePart(File))
  SetGadgetState(ProgressBar_Compression, PerCent.f)
  While WindowEvent() : Wend
EndProcedure
Procedure PureZIP_CallbackP(File.s, PerCent.f)
  SetGadgetState(ProgressBar_Progression, PerCent.f)
  While WindowEvent() : Wend
EndProcedure
;
myFileinfo.PureZIP_FileInfo
PureZIP_SetProgressionCallback(@PureZIP_CallbackP())
PureZIP_SetCompressionCallback(@PureZIP_CallbackC())
;
MyZIP.s = "c:\TEST.ZIP"
If MyZIP
  MyFilesToZIP.s = "c:\TEMP\*.*"
  If MyFilesToZIP
    If GetPathPart(MyFilesToZIP) = ""
      CurrentPath.s = Space(#MAX_PATH)
      GetCurrentDirectory_(#MAX_PATH, @CurrentPath)
      MyFilesToZIP = CurrentPath + "\" + MyFilesToZIP
    EndIf
    MyOption.l = #PureZIP_Recursive
    ArgOk = #True
  EndIf
EndIf 
;
If ArgOk
  Open_Window()
  PackedFiles.l = PureZIP_AddFiles(MyZIP, MyFilesToZIP, #PureZIP_StorePathRelative, MyOption)
  If PackedFiles
    MessageRequester("",Str(PackedFiles) + " files packed in archive " + MyZIP)
  Else
    MessageRequester("","No files found !")
  EndIf
  Close_Window()
EndIf
çà fonctionne ...

Publié : ven. 14/sept./2007 18:07
par SpaceMan
Merci Gnozal je vais verifier chez moi.
apparemment personne n'a pu essayer mon code ! :(

Publié : lun. 17/sept./2007 15:49
par SpaceMan
salut gnozal
ok c'est bon et j'ai du relire l'aide de pureZip donc je tire comme conclusion que certaines fonctions ne peuvent etre utilisé simultanément avec l'appel des deux callback de progression et de compression. EX: PureZipArchivCommpress
dans ce cas est-il possible d'afficher la fenetre de progression des deux niveaux (Progression des fichiers et progresssion generale) en utilisant la fonction PureZipArchivCompress? si oui peux tu me donner un exemple en utilisant un exploreurListGadget() car l'utisateur doit pour sélectionner les éléments à archiver(Fichiers et dossiers).
Note: Mon premier code fonctionne mais jai un problème avec la fenetre de progression

Publié : lun. 24/sept./2007 10:25
par gnozal
PureZIP_Archiv_Compress() n'utilise que le callback de 'compression' défini par PureZIP_SetCompressionCallback(). On ne peut utiliser le callback de 'progression' puisque cette fonction gère un fichier à la fois.
Si tu veux également afficher une progression 'globale' en utilisant les fonctions PureZIP_Archive_*, tu dois le programmer toi-même, en incrémentant la barre de progression à chaque fichier traité.
Exemple (pseudo code):

Code : Tout sélectionner

Pour chaque fichier
  Afficher la progression globale +1
  Compresser le fichier
Suivant

Publié : lun. 24/sept./2007 22:49
par SpaceMan
Merci pour les infos Gnozal
quelqu'un peut me dire pourquoi j'arrive pas à afficher les fichiers du zip ?

Publié : jeu. 06/déc./2007 17:00
par SpaceMan
gnozal a écrit :PureZIP_Archiv_Compress() n'utilise que le callback de 'compression' défini par PureZIP_SetCompressionCallback(). On ne peut utiliser le callback de 'progression' puisque cette fonction gère un fichier à la fois.
Si tu veux également afficher une progression 'globale' en utilisant les fonctions PureZIP_Archive_*, tu dois le programmer toi-même, en incrémentant la barre de progression à chaque fichier traité.
Exemple (pseudo code):

Code : Tout sélectionner

Pour chaque fichier
  Afficher la progression globale +1
  Compresser le fichier
Suivant
dans ce cas si jai 22 fichiers à compresser, la progression globale s'arrete à 22% puisque la bar de progression est incrémentée de 1 chaque fois q'un nouveau fichier est compressé.
des idées SVP ?

Publié : jeu. 06/déc./2007 18:59
par Backup
il te suffit de connaitre le nombre de fichiers a compresser a l'avance .. :)
ensuite tu calibre le progessbar ....

Publié : jeu. 06/déc./2007 19:20
par SpaceMan
Dobro a écrit :il te suffit de connaitre le nombre de fichiers a compresser a l'avance .. :)
ensuite tu calibre le progessbar ....
c'est exactement ce que je fais mais ça ne semble pas fonctionner dans mon code 8O
je réessaie et je poste tout à l'heure

Publié : jeu. 06/déc./2007 20:47
par Backup
tu peut toujours t'inspirer de mon prg "Backup " dont le source est dispo :)
ici :
http://www.purebasic.fr/french/viewtopi ... ght=backup

Publié : jeu. 06/déc./2007 20:59
par SpaceMan
Dobro a écrit :tu peut toujours t'inspirer de mon prg "Backup " dont le source est dispo :)
ici :
http://www.purebasic.fr/french/viewtopi ... ght=backup
Dobro tu ne serais pas un méduim ! :lol:
j'ai récupérer ton code il y a 15mn.

Publié : ven. 07/déc./2007 12:57
par SpaceMan
SpaceMan a écrit :
Dobro a écrit :tu peut toujours t'inspirer de mon prg "Backup " dont le source est dispo :)
ici :
http://www.purebasic.fr/french/viewtopi ... ght=backup
Dobro tu ne serais pas un méduim ! :lol:
j'ai récupérer ton code il y a 15mn.
[Edité]
j'ai pu recuperer le nombre de fichiers
maintenant je fais :

Code : Tout sélectionner

files.l = CountFiles(SourceDir);(c'est une procédure)
         files = 100/files
         SetGadgetState(ProgressBar_Generale,files)
jusqu'à ce que nombre de files soit = 0
mais ne marche toujours pas ! 8O

Publié : ven. 07/déc./2007 13:55
par Jacobus
Il faut d'abord que tu donnes une valeur à ta progressbar :

Code : Tout sélectionner

Global ValMax 
ValMax = 100 ; par exemple
Dans ta fenêtre ça donnera quelque chose comme ça :

Code : Tout sélectionner

ProgressBarGadget(#progbar, 10,282,585,15,0,ValMax,#PB_ProgressBar_Smooth)
Puis dans ta procédure qui boucle jusqu'au dernier fichier :

Code : Tout sélectionner

files.l = CountFiles(SourceDir)
ValMax =  files 
progression = 0 
;code de compression ici 
;et à chaque fois qu'un fichier est compressé :
progression = progression + 1   ; actualise le compte des fichiers zippés 
percent.f = progression/files*100 ; calcul le pourcentage
SetGadgetState(#progbar,percent) ; actualise la progressbar jusqu'au 100 %

Publié : ven. 07/déc./2007 14:14
par Backup
en reprenant ton exemple, j'ai fais comme ça pour mon Backup

Code : Tout sélectionner

; d'abord ...  connaitre le nombre de fichier 
files.l = CountFiles(SourceDir);(c'est une procédure)

; on calibre le Progress barr !
SetGadgetState(ProgressBar_Generale,files)




; puis dans la boucle ...a chaque fichier compresé il suffit d'aditionner une variable

Fichier_compresse=Fichier_compresse+1

SetGadgetState(ProgressBar_Generale, Fichier_compresse)
UpdateWindow_(GadgetID(ProgressBar_Generale))

Publié : ven. 07/déc./2007 18:24
par SpaceMan
Merci les gars :)
voici ce que j'ai pu faire grace votre aide !
mais la precision n'y est pas :(
la barre de progression se remplie meme avant que tous les fichiers ne soient archivés :lol:

Code : Tout sélectionner

Declare.l CountFiles(Dir.s) 
Global Window_0, ProgressBar_Compression,ProgressBar_Generale, Text_FileProcessed, Text_1, ProgressBar_Progression,Annuler_DeCompression
Global CheminInitial.s,ValMax
 ValMax = 100
Procedure.l CountFiles(Dir.s)  
   Protected ID.l, files.l  
 
   If Right(Dir, 1) <> "\"  
      Dir + "\"  
   EndIf  
 
   ID = ExamineDirectory(#PB_Any, Dir, "")  
   If ID  
      While NextDirectoryEntry(ID)  
         Select DirectoryEntryType(ID)  
            Case 0  
               Break  
            Case #PB_DirectoryEntry_File  
               files + 1  
            Case #PB_DirectoryEntry_Directory  
               If DirectoryEntryName(ID) <> "." And DirectoryEntryName(ID) <> ".."  
                  files + CountFiles(Dir + DirectoryEntryName(ID))  
               EndIf  
         EndSelect  
      Wend  
   EndIf  
 
   ProcedureReturn files  
EndProcedure

Procedure AjouterAZip(Path.s) 
  Protected dir.l, entry.s, Rep.s, chaine.s 
  If Not Right(Path, 1) = "\" : Path+"\" : EndIf 
  dir = ExamineDirectory(#PB_Any, Path, "") 
  If dir 
    ;chaine = RemoveString(Path, Rep) 
    ;Debug chaine 
    While NextDirectoryEntry(dir) 
      entry = DirectoryEntryName(dir) 
      If entry = "." Or entry = ".." 
        Continue 
      ElseIf DirectoryEntryType(dir) = #PB_DirectoryEntry_File 
        PureZIP_Archive_Compress(Path+entry,#True) 
      Else 
        AjouterAZip(Path+entry+"\") 
    EndIf : Wend 
    FinishDirectory(dir) 
  EndIf 
EndProcedure

Procedure CompressDecompressWin()
 Window_0 = OpenWindow(#PB_Any, 352, 336, 314, 110, "Progression...",#PB_Window_TitleBar | #PB_Window_ScreenCentered);352, 336, 314, 110
  ;MakeToolWindow(WindowID(Window_0), #True)
  If Window_0 : StickyWindow(Window_0, 1)
    If CreateGadgetList(WindowID(Window_0))
      Text_FileProcessed = TextGadget(#PB_Any, 5, 5, 305, 15, "Extraction des fichiers...", #PB_Text_Center)
      Text_1 = TextGadget(#PB_Any, 10, 50, 290, 15, "Progression générale", #PB_Text_Center)
      ProgressBar_Compression = ProgressBarGadget(#PB_Any, 5, 20, 305, 17, 0, 100);5, 20, 305, 17, 0, 100
      ProgressBar_Generale    = ProgressBarGadget(#PB_Any, 5, 70, 305, 17, 0, ValMax)
      Annuler_DeCompression   = ButtonGadget(#PB_Any, 240, 95, 70, 18, "Annuler");240, 95, 70, 18
    EndIf
  EndIf
EndProcedure

Procedure Close_Window()
  CloseWindow(Window_0)
EndProcedure

Procedure PureZIP_CallbackC(File.s, PerCent.f)
 If SetGadgetText(Text_FileProcessed, GetFilePart(File))
    valCompBar  = GetGadgetState(ProgressBar_Compression)
    ValProBar   = GetGadgetState(ProgressBar_Generale)
    ;SetWindowTitle(Window_0,"Progression...  " + Str(PerCent.f) + " %")
   valCompBar = SetGadgetState(ProgressBar_Compression, PerCent.f)
   files.l = CountFiles(CheminInitial)
   ValMax =  files 
   progression = 0 
   Debug files
   If  valCompBar = 100 And ValProBar = 0
       progression = progression + 1
       poucentage.f = progression/files*100
       valP =  SetGadgetState(ProgressBar_Generale,poucentage);files)
       SetWindowTitle(Window_0,"Progression...  " + Str(valP) + " %")
   ElseIf valCompBar = 100   And ValProBar <> 0
       progression = progression + 1
       poucentage.f = progression/files*100
       valP = SetGadgetState(ProgressBar_Generale,ValProBar + poucentage)
       SetWindowTitle(Window_0,"Progression génerale...  " + Str(valP) + " %")
   EndIf
        
  While WindowEvent() : Wend
  ; Stop avec Echap 
  If GetAsyncKeyState_(#VK_ESCAPE) & 32768 ; APPUI SUR ECHAP 
     ProcedureReturn #True
     PureZIP_Archive_Close()
     DeleteFile(destination$+nom_archive$)
  EndIf
    ProcedureReturn #False
 EndIf
EndProcedure

;Procedure PureZIP_CallbackP(File.s, PerCent.f)
;  SetGadgetState(ProgressBar_Generale, PerCent.f) ;ProgressBar_Progression
;  While WindowEvent() : Wend
;EndProcedure

myFileinfo.PureZIP_FileInfo
;PureZIP_SetProgressionCallback(@PureZIP_CallbackP())
PureZIP_SetCompressionCallback(@PureZIP_CallbackC()) 
; 
MyZIP.s = "C:\TEST.ZIP"
CheminInitial = "d:\Libs"
If MyZIP 
  MyFilesToZIP.s = PathRequester("Choisissez un répertoire", CheminInitial);"c:\TEMP\*.*" 
  If MyFilesToZIP 
    If GetPathPart(MyFilesToZIP) = "" 
      CurrentPath.s = Space(#MAX_PATH) 
      GetCurrentDirectory_(#MAX_PATH, @CurrentPath)
      MyFilesToZIP = CurrentPath + "\" + MyFilesToZIP 
    EndIf 
    MyOption.l = #PureZIP_Recursive 
    ArgOk = #True 
  EndIf 
EndIf 
; 
If ArgOk 
   CompressDecompressWin()
    
    PureZIP_Archive_Create(MyZIP.s, #APPEND_STATUS_CREATE)
 If  AjouterAZip(MyFilesToZIP)   
     PureZIP_Archive_Close()
  ;PackedFiles.l = PureZIP_AddFiles(MyZIP, MyFilesToZIP, #PureZIP_StorePathRelative, MyOption) 
  ;If PackedFiles 
    MessageRequester("",Str(PackedFiles) + " files packed in archive " + MyZIP) 
  Else 
    MessageRequester("","No files found !") 
  EndIf 
  Close_Window() 
EndIf