多个错误窗口,代码精简。请教
本帖最后由 5735988 于 2012-4-18 11:00 编辑多个错误窗口,代码精简。请教,应该怎么精简一下代码,太乱了
做的目的在于,不管什么时候,出现什么未知的错误,都能处理。
errer()
Func errer()
IfWinExists("窗口1")Then
;~ 关闭窗口
EndIf
IfWinExists("窗口2")Then
;~ 窗口控件点击
EndIf
IfWinExists("窗口3")Then
;~ 调用别的 _hao()
EndIf
IfWinExists("窗口4")Then
;~ 关闭进程
EndIf
IfWinExists("窗口5")Then
;~ 激活窗口,移动窗口
EndIf
IfWinExists("窗口6")Then
;~ 输入信息
EndIf
;* 后面还有很多窗口的判断
EndFunc 多个错误窗口,代码精简。请教,应该怎么精简一下代码,太乱了
errer()
Func errer()
IfWinExists( ...
5735988 发表于 2012-4-16 23:30 http://www.autoitx.com/images/common/back.gif
你给的代码已经很简洁了,连Then后面都精掉了
并且很整齐,一点都不乱! 回复 1# 5735988
如果是以'固定值'作为判断条件, 过多判断时一般用 Switcherrer(); 用参数 1 调用 errer
Func errer($n = 1)
Switch $n
case 1
;...
case 2
;...
case 3,4,5
;...
case 6,7,8
;...
case else
;...
EndSwitch
EndFunc 回复 3# user3000
不错。。。 支持3楼代码谢谢分享 回复 3# user3000
errer()
Func errer()
IfWinExists("窗口1")Then
EndIf
IfWinExists("窗口2")Then
EndIf
IfWinExists("窗口3")Then
EndIf
IfWinExists("窗口4")Then
EndIf
IfWinExists("窗口5")Then
EndIf
IfWinExists("窗口6")Then
EndIf
;* 后面还有很多窗口的判断
EndFunc 本帖最后由 netegg 于 2012-4-17 17:57 编辑
回复 3# user3000
这样累赘不累赘?如果有参数的话,直接在前面定义不同的函数就行了,何必要整到一起,而且楼主是要根据窗口判断窗口是否存在,只拿窗口做参数的话还要加判断
楼主如果真觉得那么写很累的话,试试看这样,不过也一样累
error('窗口n')
func error($window)
for $i =1 to n
if winexists('窗口' & $i) then _error($i)
next
endfunc
func _error($i)
下面再跟三楼的代码 你给的代码已经很简洁了,连Then后面都精掉了
并且很整齐,一点都不乱!
happytc 发表于 2012-4-16 23:55 http://www.autoitx.com/images/common/back.gif
happytc也开起玩笑了 回复 7# netegg
未知楼主判断之后的具体操作是怎样, 我在2楼猜想他是全部操作细分化.
如果只是提示信息或关闭该窗口之类的'共性'操作, 像您这样用循环判断是最简洁了.
Err()
Func _Err()
Local $Wins = ['窗口1', '窗口2', '窗口3', '窗口4', '窗口5', '窗口6', '窗口7']
For $i = 0 to 6
If WinExists ($Wins[$i] Then
Msgbox(0, 'OK', Wins[$i] & 'Exists')
Else
Msgbox(0, 'Bad', Wins[$i] & 'not Exists')
Endif
Next
Endfunc 功能第一,稳定第二,高效第三,浮云第四 1, Then 什么?
2, 是否需要多次 If ...Then ...Endif,而不是 ElseIf?
3, WinExists() 标题使用正则够用不? errer()
Func errer()
IfWinExists("窗口1")Then
;~ 关闭窗口
EndIf
IfWinExists("窗口2")Then
;~ 窗口控件点击
EndIf
IfWinExists("窗口3")Then
;~ 调用别的 _hao()
EndIf
IfWinExists("窗口4")Then
;~ 关闭进程
EndIf
IfWinExists("窗口5")Then
;~ 激活窗口,移动窗口
EndIf
IfWinExists("窗口6")Then
;~ 输入信息
EndIf
;* 后面还有很多窗口的判断
EndFunc 执行的操作不类似,不用打算合并了,这样很精简了 本帖最后由 502762378 于 2012-4-18 19:08 编辑
回复 13# netegg
蛋蛋,不知道是否可以窗口名称和操作写一个数组呢?如果不行,请嘲讽我。。 回复 14# 502762378
完全没必要,那样做最后还是要判断到底是哪个,执行什么操作,还不如这样
页:
[1]