5735988 发表于 2012-4-16 23:30:22

多个错误窗口,代码精简。请教

本帖最后由 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

happytc 发表于 2012-4-16 23:55:23

多个错误窗口,代码精简。请教,应该怎么精简一下代码,太乱了

errer()
Func errer()
IfWinExists( ...
5735988 发表于 2012-4-16 23:30 http://www.autoitx.com/images/common/back.gif


    你给的代码已经很简洁了,连Then后面都精掉了
并且很整齐,一点都不乱!

user3000 发表于 2012-4-17 00:02:06

回复 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

haijie1223 发表于 2012-4-17 09:31:31

回复 3# user3000


    不错。。。

魔导 发表于 2012-4-17 09:49:54

支持3楼代码谢谢分享

5735988 发表于 2012-4-17 15:01:46

回复 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:30:28

本帖最后由 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)
下面再跟三楼的代码

netegg 发表于 2012-4-17 17:58:57

你给的代码已经很简洁了,连Then后面都精掉了
并且很整齐,一点都不乱!
happytc 发表于 2012-4-16 23:55 http://www.autoitx.com/images/common/back.gif
happytc也开起玩笑了

user3000 发表于 2012-4-17 18:14:50

回复 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

Qokelate 发表于 2012-4-17 18:16:50

功能第一,稳定第二,高效第三,浮云第四

afan 发表于 2012-4-17 20:14:00

1, Then 什么?
2, 是否需要多次 If ...Then ...Endif,而不是 ElseIf?
3, WinExists() 标题使用正则够用不?

5735988 发表于 2012-4-18 10:59:25

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

netegg 发表于 2012-4-18 18:44:18

执行的操作不类似,不用打算合并了,这样很精简了

502762378 发表于 2012-4-18 18:57:18

本帖最后由 502762378 于 2012-4-18 19:08 编辑

回复 13# netegg


    蛋蛋,不知道是否可以窗口名称和操作写一个数组呢?如果不行,请嘲讽我。。

netegg 发表于 2012-4-18 19:21:31

回复 14# 502762378

完全没必要,那样做最后还是要判断到底是哪个,执行什么操作,还不如这样
页: [1]
查看完整版本: 多个错误窗口,代码精简。请教