Page 1 sur 1
[R] Deux Whiles en même temps
Posté : sam. 19 sept. 2009 10:14
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 ?
Re: [..] Deux Whiles en même temps
Posté : sam. 19 sept. 2009 11:02
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
Re: [..] Deux Whiles en même temps
Posté : sam. 19 sept. 2009 11:24
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
Re: [..] Deux Whiles en même temps
Posté : sam. 19 sept. 2009 11:41
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
Re: [..] Deux Whiles en même temps
Posté : sam. 19 sept. 2009 11:42
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
Code : Tout sélectionner
AdlibEnable("_boucle2",1010)
_boucle1()
Func _boucle1()
While 1
Sleep(100)
MsgBox(0,"", "1")
Wend
EndFunc
Func _boucle2()
MsgBox(0,"", "2")
EndFunc
Re: [..] Deux Whiles en même temps
Posté : sam. 19 sept. 2009 16:26
par DJSIR
Merci, après deux tests, la deuxième fonction de Iste fonctionne...
Résolu !