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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

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

#1

Message 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.
Modifié en dernier par XenaMelody le jeu. 27 oct. 2011 16:19, modifié 1 fois.
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

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

#2

Message 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)
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

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

#3

Message 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...
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

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

#4

Message par PandiPanda »

il suffit de faire des test ;)
► Afficher le texte
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

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

#5

Message 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 ) !
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Répondre