Page 1 sur 1

[R] Problème Loop avec FileExists et FileDelete.

Posté : jeu. 27 oct. 2011 15:52
par XenaMelody
Bonjour !

Il y a quelque chose que je ne comprends pas :

Code : Tout sélectionner

While FileExists(@TempDir & "\*.ScriptCreated.au3")
    MsgBox(0, "", "LoopStart")
    FileDelete(@TempDir & "\*.ScriptCreated.au3")
    If @error Then
        MsgBox(16,  "", "Problem !")
    Else
        MsgBox(0, "", "File Deleted")
    EndIf
WEnd
MsgBox(0, "", "Done")
Ce script est dans une fonction exécuté par un bouton.
Quand le script ne trouve aucun fichier, il affiche le message Done sans problème. Mais lorsque je créé un ficher x.ScriptCreated.au3, ça provoque une boucle infini. Et après un test, j'ai remarqué que FileDelete dans mon cas ne s’exécute une fois que le programme se ferme...

Mais quand j'exécute ce script sur un fichier à part sans aucune fonction, si je créer plus d'un fichier, le script s'exécute qu'une fois pour tout supprimé. Ne doit-il pas s'exécuter le même nombre de fois que de fichier ayant pour nom *.ScriptCreated.au3 ?

Merci d'avance.

Re: [..] Problème Loop avec FileExists et FileDelete.

Posté : jeu. 27 oct. 2011 15:59
par PandiPanda
actuellement votre boucle equivaut à ceci ...
► Afficher le texte
Pourquoi? simplement parceque vous mettez un ExitLoop dans la boucle, sans être "entouré" de condition, forcemment il executera toujours qu'une seule fois ... par chance autoit gère les '*' donc pour ce que vous voulez faire, ca change pas grand chose ^^

pour le coup de la boucle infinie, le seul cas est que vous entouré votre boucle while par une autre boucle while !(ou do ... until)

Re: [..] Problème Loop avec FileExists et FileDelete.

Posté : jeu. 27 oct. 2011 16:11
par XenaMelody
Désolé, je m'était trompé, j'avais mis un ExitLoop pour des tests. J'ai réédité mon message. Et j'ai remarqué quelque chose d'autre. Si je lance mon script, que j'en créer un et que j'essaye de le supprimé -> boucle infini...
Si je lance mon script, que j'en créer un, que je ferme mon script principale, que je le relance et que je lance la procédure de suppression, la boucle s'exécute qu'une seul fois... Dois-je comprendre que si j'exécute cette ligne

Code : Tout sélectionner

FileDelete(@TempDir & "\*.ScriptCreated.au3")
FileDelete va supprimer TOUT les fichiers finissants par .ScriptCreated.au3 ? Si oui, pas besoin de loop alors...

Re: [..] Problème Loop avec FileExists et FileDelete.

Posté : jeu. 27 oct. 2011 16:15
par PandiPanda
il suffit de faire des test ;)
► Afficher le texte

Re: [..] Problème Loop avec FileExists et FileDelete.

Posté : jeu. 27 oct. 2011 16:18
par XenaMelody
J'ai déjà fais les tests et bien, on peut en conclure que FilesExists, FilesDelete... eh ba c'est puissant OU ALORS * est puissant : En gros, sa marche sans Loop :D . Merci !

Et encore un résolut ( mon 3ème de la journée ) !