找回密码
 加入
搜索
查看: 4679|回复: 14

[系统综合] 多个错误窗口,代码精简。请教

 火.. [复制链接]
发表于 2012-4-16 23:30:22 | 显示全部楼层 |阅读模式
本帖最后由 5735988 于 2012-4-18 11:00 编辑

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

做的目的在于,不管什么时候,出现什么未知的错误,都能处理。
errer()
Func errer()
If  WinExists("窗口1")Then
;~         关闭窗口
EndIf
If  WinExists("窗口2")Then
;~         窗口控件点击
EndIf
If  WinExists("窗口3")Then
;~         调用别的 _hao()
EndIf
If  WinExists("窗口4")Then
;~         关闭进程
EndIf
If  WinExists("窗口5")Then
;~         激活窗口,移动窗口
EndIf
  If  WinExists("窗口6")Then
;~           输入信息
EndIf
;* 后面还有很多窗口的判断
EndFunc
发表于 2012-4-16 23:55:23 | 显示全部楼层
多个错误窗口,代码精简。请教,应该怎么精简一下代码,太乱了

errer()
Func errer()
If  WinExists( ...
5735988 发表于 2012-4-16 23:30



    你给的代码已经很简洁了,连Then后面都精掉了
并且很整齐,一点都不乱!
发表于 2012-4-17 00:02:06 | 显示全部楼层
回复 1# 5735988

如果是以'固定值'作为判断条件, 过多判断时一般用 Switch
errer()  ; 用参数 1 调用 errer
Func errer($n = 1)
Switch $n
    case 1
     ;...
    case 2
     ;...
    case 3,4,5
     ;...
    case 6,7,8
    ;...
    case else
    ;...
EndSwitch
EndFunc 
发表于 2012-4-17 09:31:31 | 显示全部楼层
回复 3# user3000


    不错。。。
发表于 2012-4-17 09:49:54 | 显示全部楼层
支持3楼  代码  谢谢分享
 楼主| 发表于 2012-4-17 15:01:46 | 显示全部楼层
回复 3# user3000


    errer()
Func errer()
If  WinExists("窗口1")Then
EndIf
If  WinExists("窗口2")Then
EndIf
If  WinExists("窗口3")Then
EndIf
If  WinExists("窗口4")Then
EndIf
If  WinExists("窗口5")Then
EndIf
  If  WinExists("窗口6")Then
EndIf
;* 后面还有很多窗口的判断
EndFunc
发表于 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)
下面再跟三楼的代码
发表于 2012-4-17 17:58:57 | 显示全部楼层
你给的代码已经很简洁了,连Then后面都精掉了
并且很整齐,一点都不乱!
happytc 发表于 2012-4-16 23:55

happytc也开起玩笑了
发表于 2012-4-17 18:14:50 | 显示全部楼层
回复 7# netegg

未知楼主判断之后的具体操作是怎样, 我在2楼猜想他是全部操作细分化.
如果只是提示信息或关闭该窗口之类的'共性'操作, 像您这样用循环判断是最简洁了.
    Err()
Func _Err()
    Local $Wins[7] = ['窗口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
发表于 2012-4-17 18:16:50 | 显示全部楼层
功能第一,稳定第二,高效第三,浮云第四
发表于 2012-4-17 20:14:00 | 显示全部楼层
1, Then 什么?
2, 是否需要多次 If ...Then ...Endif,而不是 ElseIf?
3, WinExists() 标题使用正则够用不?
 楼主| 发表于 2012-4-18 10:59:25 | 显示全部楼层
errer()
Func errer()
If  WinExists("窗口1")Then
;~         关闭窗口
EndIf
If  WinExists("窗口2")Then
;~         窗口控件点击
EndIf
If  WinExists("窗口3")Then
;~         调用别的 _hao()
EndIf
If  WinExists("窗口4")Then
;~         关闭进程
EndIf
If  WinExists("窗口5")Then
;~         激活窗口,移动窗口
EndIf
  If  WinExists("窗口6")Then
;~           输入信息
EndIf
;* 后面还有很多窗口的判断
EndFunc

评分

参与人数 1金钱 -13 贡献 -1 收起 理由
user3000 -13 -1 多打几个字, 描述自己要求会死啊!

查看全部评分

发表于 2012-4-18 18:44:18 | 显示全部楼层
执行的操作不类似,不用打算合并了,这样很精简了
发表于 2012-4-18 18:57:18 | 显示全部楼层
本帖最后由 502762378 于 2012-4-18 19:08 编辑

回复 13# netegg


    蛋蛋,不知道是否可以窗口名称和操作写一个数组呢?如果不行,请嘲讽我。。
发表于 2012-4-18 19:21:31 | 显示全部楼层
回复 14# 502762378

完全没必要,那样做最后还是要判断到底是哪个,执行什么操作,还不如这样
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 07:41 , Processed in 0.086830 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表