[R] Deux Whiles en même temps

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
DJSIR
Niveau 8
Niveau 8
Messages : 583
Enregistré le : mar. 01 juil. 2008 15:16
Localisation : 76, Le HAVRE (in the DJSIR World)
Status : Hors ligne

[R] Deux Whiles en même temps

#1

Message par DJSIR »

Bonjour. J'ai une petite question.

J'ai un script (normal..) et j'ai plusieurs choses a modifier au cours du script.

J'ai une liste, et quand je clique sur un item, un label se change.. enfin, moi j'appelle sa le rafraichissement..

Après, plus bas, j'ai deux labels que je dois changer toutes les deux secondes "Sleep(2000)" et cela arrête la boucle aussi.

J'ai donc essayé While 2 mais sans succes.

Si je met dans une fonction, cela stoppe la boucle principale...

Alors, personne ?
Modifié en dernier par DJSIR le sam. 19 sept. 2009 16:26, modifié 1 fois.
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Deux Whiles en même temps

#2

Message par Iste »

Le sujet a été aborder encore et encore et encore et encore et encore....
La solution sera surement un AdlibEnable() pour ton label
Si ce n'est pas possible, a chaque passage de la grosse boucle, tu peux mettre ceci

Code : Tout sélectionner

$Timer = TimerInit()

While 1
    ;blabla
    If TimerDiff($Timer) > 2000 Then
        ;MAJ label
        $Timer = TimerInit()
    EndIf
WEnd
La condition mettra a jour le label toute les 2sec, mais ca sera surement plus lourd :s
Signez ici
Avatar du membre
DJSIR
Niveau 8
Niveau 8
Messages : 583
Enregistré le : mar. 01 juil. 2008 15:16
Localisation : 76, Le HAVRE (in the DJSIR World)
Status : Hors ligne

Re: [..] Deux Whiles en même temps

#3

Message par DJSIR »

Rien ne fonctionne ou j'ai mal compris. du coup, j'ai regardé les "encore et encore et encore"
J'ai pris ce petit bout de code :

Code : Tout sélectionner

AdlibEnable("_boucle2",101)
_boucle1()

Func _boucle1()
    While 1
        Sleep(100)
        MsgBox(0,"", "1")
        ExitLoop
    Wend   
EndFunc 

Func _boucle2()
    Sleep(100)
    MsgBox(0,"", "2")
EndFunc 
EndFunc
Chez moi il n'y a que 2 qui s'affiche et 1 jamais... normalement je devrais avoir une alternance
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Deux Whiles en même temps

#4

Message par Iste »

Un peu d'effort siouplé !

Il ne faut pas mettre de sleep dans la fonction appelé par l'AdlibEnable
La dans le code, voila ce qui se passe
- On appel la fonction _boucle2 tout les 101ms
- Donc on l'appel
- _boucle2 met le script en pause 100ms
- _boucle2 attend qu'on lui dise ok
- On dit ok, mais ca y est, ca fait plus de 100ms
- Donc on appel _boucle2....

Voici un exemple fonctionel

Code : Tout sélectionner

AdlibEnable("_boucle2",100)

While 1
    Sleep(200)
    Beep(500,50)
Wend  

Func _boucle2()
    Beep(2000,50)
EndFunc
MAis dans _boucle2, evite a tout prix les fonction du genre msgbox, sleep ou beep qui mettent le script en pause
Signez ici
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] Deux Whiles en même temps

#5

Message par SagePourpre »

Il n'y aura pas d'alternance pour deux raison.


À la fin de ta boucle 1, il y'a exitloop, ce qui sort de ta boucle 1 pour ne laisser que ton adlibenable
exécuter la boucle 2 sans arrêt.

Si tu veux une alternance entre les deux boucles, premièremement, tu dois enlever le exitloop de
la première boucle pour ne pas la quitter immédiatement après sa première exécution.

Ensuite, met le délai de ton adlibenable à 1000 ms plutôt que 100 ms ...

Tu vas voir les deux msgbox s'exécuter correctement
► Afficher le texte
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
DJSIR
Niveau 8
Niveau 8
Messages : 583
Enregistré le : mar. 01 juil. 2008 15:16
Localisation : 76, Le HAVRE (in the DJSIR World)
Status : Hors ligne

Re: [..] Deux Whiles en même temps

#6

Message par DJSIR »

Merci, après deux tests, la deuxième fonction de Iste fonctionne...

Résolu !
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Répondre