找回密码
 加入
搜索
查看: 2722|回复: 10

[AU3基础] Seterror函数的困惑 望各位解答谢谢

  [复制链接]
发表于 2014-6-15 17:44:40 | 显示全部楼层 |阅读模式

Local $hWnd = _GetForegroundWindow()
If @error Then
        ; 前台窗口获取失败。
Else
        WinFlash($hWnd) ; 闪烁窗口。
EndIf

; 获取当前前台窗口的句柄。
Func _GetForegroundWindow()
        Local $iResult = DllCall("User32.dll", "hwnd", "GetForegroundWindow")

        Return SetError($iResult[0] = 0, 0, $iResult[0])
EndFunc        ;==>_GetForegroundWindow


这是P大教材里的一算代码,有几点以后望各位帮忙解答 谢谢
1 SetError($iResult[0] = 0, 0, $iResult[0]) 和SetError( 0, 0, $iResult[0]) 有何不同 教程里有很多的地方都是类似前者的方式 为什么这样呢?有何意义?
2 如一中的$iResult[0] = 0 ,也就是说这里已经将 $iResult[0])赋值为0了 后面让seterror返回$iResult[0] 那按理说返回值应该是0啊,但实际测试发现还是原来的值 这又是为何?
3 自定义函数的返回值通过seterror设置了@error的值=0了 那这样的话 回到前面的 if @error 应该执行的是then 后面的语句啊 但是为什么执行的却是else后的语句呢
 楼主| 发表于 2014-6-15 17:57:13 | 显示全部楼层
自己顶上去
发表于 2014-6-15 18:34:25 | 显示全部楼层
顶楼主
发表于 2014-6-15 19:25:03 | 显示全部楼层
SetError($iResult[0] = 0, 0, $iResult[0])
$iResult[0] = 0不是赋值,是$iResult[0]和0比较,如果相等则为true,不相等则为false
 楼主| 发表于 2014-6-15 20:02:52 | 显示全部楼层
回复 4# seniors


    嗯谢谢 唉自己琢磨真的是太费劲了 要是有个老师就好了
发表于 2014-6-15 20:11:58 | 显示全部楼层
多看看帮助!
SetError ( code [, extended = 0 [, return value]] )

SetError($iResult[0] = 0, 0, $iResult[0]) 和SetError( 0, 0, $iResult[0])有什么不同?
第一个返回的@error可能是TRUE也可能是False,就看$iResult[0] 是否等于 0,而第二个直接设置@error=0

你理解这个以后就不会提出后面的两个问题了
 楼主| 发表于 2014-6-15 20:23:24 | 显示全部楼层
回复 6# gto250


    问题是帮助里没有第一个问题的答案我才会有了第二个问题的 要是有说$iResult[0] = 0 是判断不是赋值我也不会发帖问了
发表于 2014-6-15 21:42:50 | 显示全部楼层
SetError($iResult[0] = 0, 0, $iResult[0])中的$iResult[0] = 0不是赋值操作,而是判断是否相等。
发表于 2014-6-15 21:42:53 | 显示全部楼层
学习了,我怎么好像都没有见过SetError($iResult[0] = 0, 0, $iResult[0]) 的实例。
发表于 2014-6-16 07:17:57 | 显示全部楼层
回复 9# xms77
不是没有实例,而是一般的编程中,好多忽略了错误的判断,所以说SetError用的比较少

函数申明时,
如YourFunc($x = 0,$y=0){
具体语句}
此时的($x = 0,$y=0)是设置$x,$y的默认值

函数调用时,
如YourFunc($foo = 0,$bar=0)
则是把$foo = 0这个判断的结果赋值给$x
  把$bar = 0这个判断的结果赋值给$y
发表于 2014-6-16 17:19:04 | 显示全部楼层
楼上说的很精P
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 07:23 , Processed in 0.085765 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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