本帖最后由 大叔 于 2017-1-19 23:42 编辑
先上代码 这是第一部分代码 有问题的#include <Date.au3>
$a = 0
While 1
Sleep(200)
If StringRight(@SEC, 1) = $a Then ;;0
$a = 5
FileWriteLine("321.txt", _NowCalc())
EndIf
If StringRight(@SEC, 1) = $a Then ;;5
$a = 0
FileWriteLine("321.txt", _NowCalc())
EndIf
WEnd
我想当前时间秒数个位为5或0时执行一个动作一次
但上面的代码跑出来的结果是下面这样的
2016/11/09 14:00:20
2016/11/09 14:00:25
2016/11/09 14:00:25
2016/11/09 14:00:30
2016/11/09 14:00:35
2016/11/09 14:00:35
2016/11/09 14:00:40
2016/11/09 14:00:45
2016/11/09 14:00:45
2016/11/09 14:00:50
2016/11/09 14:00:55
2016/11/09 14:00:55
2016/11/09 14:01:00
很明显 5秒的时候多执行了一次.
我折腾一下午找不出原因. AUTOIT 3.3.6.1
换成Switch判断秒数就是正常的
难道我又犯了幼稚的错误?
这是第二部分代码 没有问题OK的#include <Date.au3>
$a = 0
While 1
Sleep(200)
Switch StringRight(@SEC, 1)
Case 5
If $a = 0 Then
$a = 5
FileWriteLine("321.txt", _NowCalc())
EndIf
Case 0
If $a = 5 Then
$a = 0
FileWriteLine("321.txt", _NowCalc())
EndIf
EndSwitch
WEnd
2016/11/09 14:21:00
2016/11/09 14:21:05
2016/11/09 14:21:10
2016/11/09 14:21:15
2016/11/09 14:21:20
2016/11/09 14:21:25
2016/11/09 14:21:30
2016/11/09 14:21:35
2016/11/09 14:21:40
2016/11/09 14:21:45
2016/11/09 14:21:50
2016/11/09 14:21:55
2016/11/09 14:22:00
2016/11/09 14:22:05
2016/11/09 14:22:10
2016/11/09 14:22:15
2016/11/09 14:22:20 |