Page 1 sur 1

[R] Pb progress bar lors de la suppression de fichiers

Posté : mer. 06 mai 2015 15:09
par mactag
Bonjour,

J'ai un message d'erreur lorsque j'exécute ce bout de code qui permet de verifier en temps réel les fichiers présents dans un répertoire et d'afficher une "progress bar" au fur et à mesure que les fichiers sont supprimés de ce repertoire.

La "progress bar" avance correctement au fur et à mesure que les fichiers dans c:\tmp sont supprimés mais la boucle rencontre un pb lorsqu'il n'y a plus de fichiers dans le répertoire.

Merci d'avance pour toute aide charitable.

code :

Code : Tout sélectionner

#include <File.au3>
Global $FILE
Global $INDEX
Global $FILE[0]
$DIR = ("\\127.0.0.1\c$\tmp")

If Not @error Then
    $FILE = _FileListToArray($DIR,"*",1)
    If IsArray($FILE) Then
    ProgressOn("                       Mon prog ", "Prog en cours...")
    For $INDEX = 1 To $FILE[0]

    Do
    $FILE = _FileListToArray($DIR,"*",1)
    ProgressSet($INDEX*100/$FILE[0],$FILE[$INDEX])
        Sleep(250)
    Until $FILE = 0
    Next
        ProgressSet(100, "", "Prog terminée")
        Sleep(5000)
        ProgressOff()
    EndIf
EndIf

Re: [..] Pb progress bar lors de la suppression de fichiers

Posté : mer. 06 mai 2015 15:15
par jbnh
Salut,

Je comprend pas trop l'idée de ce filelisttoarray imbriqué....

Ceci suffit non ? :

Code : Tout sélectionner

#include <File.au3>
Global $FILE
Global $INDEX
Global $FILE[0]
$DIR = (@scriptdir&"\test")

If Not @error Then
    $FILE = _FileListToArray($DIR,"*",1)
    If IsArray($FILE) Then
        ProgressOn("                       Mon prog ", "Prog en cours...")
        For $INDEX = 1 To $FILE[0]      
            ProgressSet($INDEX*100/$FILE[0],$FILE[$INDEX])
                Sleep(250)
        Next
            
        ProgressSet(100, "", "Prog terminée")
        Sleep(5000)
        ProgressOff()
    endif
EndIf

Re: [..] Pb progress bar lors de la suppression de fichiers

Posté : mer. 06 mai 2015 20:44
par mactag
Merci de m'avoir consacré un peu de votre temps.

Le soucis c'est que sans "do" et "Until $file = 0" le programme se lance et liste tous les fichiers et se ferme.

Avec "do" et le "Until $file = 0" le programme se comporte comme je veux, c'est à dire, il liste les fichiers et attend la suppression des fichiers et à chaque suppression de fichier(que je fais à la main pour simuler l'action d'un programme tierce) la barre avance, quand il n'y a plus de fichiers la barre de progression se termine, sauf qu'il y a une erreur.

Le programme fait exactement ce que je veux sauf qu'à la fin il y a un message d'erreur au lieu du message "Prog terminé"

Re: [..] Pb progress bar lors de la suppression de fichiers

Posté : mer. 06 mai 2015 21:41
par mikell
Le problème est dans la boucle Do
Quand il n'y a plus de fichiers, _FileListToArray échoue donc $FILE n'est pas une array mais la ligne suivante appelle quand même $FILE[0] et $FILE[$INDEX] d'où erreur
Solution :

Code : Tout sélectionner

   Do
    $FILE = _FileListToArray($DIR,"*",1)
    [color=#BF0000]If not IsArray($FILE) Then Exitloop[/color]
    ; ...
Cela dit faudrait revoir sérieusement la déclaration des variables

Re: [R] Pb progress bar lors de la suppression de fichiers

Posté : jeu. 07 mai 2015 14:08
par mactag
Ca a fonctionné au poil
Merci beaucoup.
:D :D :D

Re: [..] Pb progress bar lors de la suppression de fichiers

Posté : jeu. 07 mai 2015 14:27
par jguinch
mactag, la balise [R] se met dans le titre du premier message.
Je l'ai fait pour celui-ci

Re: [R] Pb progress bar lors de la suppression de fichiers

Posté : lun. 11 mai 2015 07:01
par mactag
OK désolé