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 ?
[R] Deux Whiles en même temps
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- DJSIR
- 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
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
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
- Iste
- 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
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 ceciLa condition mettra a jour le label toute les 2sec, mais ca sera surement plus lourd :s
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
WEndSignez ici
- DJSIR
- 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
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 :
Chez moi il n'y a que 2 qui s'affiche et 1 jamais... normalement je devrais avoir une alternance
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$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
- Iste
- 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
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 fonctionelMAis dans _boucle2, evite a tout prix les fonction du genre msgbox, sleep ou beep qui mettent le script en pause
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)
EndFuncSignez ici
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Deux Whiles en même temps
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
À 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 = )
plus belle vue du haut de son Pouf = )
- DJSIR
- 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
Merci, après deux tests, la deuxième fonction de Iste fonctionne...
Résolu !
Résolu !
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
