为什么会多执行一次
本帖最后由 qinylj 于 2012-9-23 16:00 编辑今天做了一个控制VPN登陆地东西,代码如下Do
ControlCommand("BJVPN", "登录", "", "SetCurrentSelection", Random(1, $BDcommentreply_VPN_Combobox - 1, 1))
ControlClick("BJVPN", "登录", "", "left", 1)
WinWait("Ping", "关闭")
Sleep(2000)
$BDcommentreply_VPN_Testtext = StringInStr(ControlGetText("Ping", "关闭", ""), "time=")
;~ WinKill("Ping", "关闭")
Until $BDcommentreply_VPN_Testtext > 0ControlCommand那段代码是随机设置Combobox的项目
接下来就是点击 测试 按钮
然后等待窗口出现
之后通过判断Edit中是否含有time=来结束循环
但是只要把注释出的代码换成winclose或controlclick或者winkill等就会多弹出来一次,困扰我一个下午了,哎。 回复 1# qinylj
没条件进行具体测试, 只能给出点建议:
无论是那种循环语法, 如果其运行次数不对时, 都应该跟踪它条件变量, 以检查出错的'环节', 所以你要检查 $BDcommentreply_VPN_Testtext 在每次循环中的值! 最好用 ConsoleWrite 作输出, 这样不怎么影响程序的效率和执行的通畅性. 我想你应该找找帮助文件看看Do until 的具体用法 你写的结束条件 跟 你想要的结束条件 有差距~~~ 回复 2# user3000
我试过用Consolewrite写的,如果里面包含了time=的时候返回的是一个数字,就是time=的位置
但是,这个时候Ping窗口依然会弹出两次,后来我把do until循环去掉之后,同样的问题出现了,依旧会两次弹出ping窗口...... 回复 3# nivisde
如果问题真的那么简单我就不会问了......
我想你还没看懂我的问题......出现问题是因为把注释的那行代码加上了...... 回复 4# 魔导
同三楼一样,Do until循环没有任何问题,我把注释那段代码加上就会出现多弹一次窗口的问题,把那行代码去掉后就一切正常了...... 回复 7# qinylj
好吧- -!那就注释掉那行用吧~~~
页:
[1]