Re: [AHK-] 迴圈問題

作者: fossil313 (陣雨)   2015-02-03 01:17:10
※ 引述《lan661203 (廟小狼)》之銘言:
: my_switch1:=0
: loop{
: If ((A_Hour = 11) && (A_Min = 22) && (A_Sec = 00))
: {
: my_switch1 := 1
: msgbox 1
: }
: else If ((A_Hour = 11) && (A_Min = 23) && (A_Sec = 30))
: {
: my_switch1 := 0
: msgbox 2
: }
: else If (my_switch1=1)
: {
: SetTimer, wawa, 6000
: }
: else if(my_switch1=0)
: {
: SetTimer, wawa, Off
: }
: }
: wawa:
: If (my_switch1=1)
: {
: msgbox 3
: }
: return
: 這裡的wawa 怎麼不會執行 是擺放的位置不對嗎
前面推文推到都不知道自己在說什麼了 XD
直接依時間序排出所有執行狀況
~ 11:21:59
目前my_switch1 = 0 且時間不為11:22:00或11:23:30
因此else if(my_switch1=0)成立
所以把timer關掉
11:22:00
目前時間符合
因此If ((A_Hour = 11) && (A_Min = 22) && (A_Sec = 00))成立
所以my_switch1的值變為1 並執行msgbox, 1
11:22:01 ~ 11:23:29
目前my_switch1 = 1 且時間不為11:22:00或11:23:30
因此else If (my_switch1=1)成立
所以將timer設為6000ms後執行
注意這裡由於一次loop執行的時間小於6000ms
所以timer一直不斷被設為6000ms後執行 以致一直看不到msgbox, 3執行
11:23:30
目前時間符合
因此else If ((A_Hour = 11) && (A_Min = 23) && (A_Sec = 30))成立
所以my_switch1的值變為0 並執行msgbox, 2
11:23:31 ~
目前my_switch1 = 0 且時間不為11:22:00或11:23:30
因此else If (my_switch1=0)成立
所以將timer關掉
還記得前面timer被設定在6000ms後執行沒錯吧?
但由於從11:23:30時my_switch1改為0之後
到11:23:31時關掉timer之間的時間小於6000ms
所以很遺憾的是timer在執行前就被關掉了
簡單來說 就是上面的程式碼不斷將timer的時間設定在6秒後執行
之後又在6秒內關掉timer 所以導致timer從頭到尾都沒執行
作者: fossil313 (陣雨)   2015-02-03 01:20:00
還有我第一段推文說錯了 不要理它
作者: lan661203 (廟小狼)   2015-02-03 19:35:00
謝謝大大分晰的真清楚,我要消化理解一下另一問題,假如有辦法執行到wawa,但loop卻停止了是不是要改變程式碼才有辦法解決
作者: fossil313 (陣雨)   2015-02-03 20:04:00
可能要先問問甚麼狀況讓你覺得loop停了

Links booklink

Contact Us: admin [ a t ] ucptt.com