Seterror函数的困惑 望各位解答谢谢
Local $hWnd = _GetForegroundWindow()
If @error Then
; 前台窗口获取失败。
Else
WinFlash($hWnd) ; 闪烁窗口。
EndIf
; 获取当前前台窗口的句柄。
Func _GetForegroundWindow()
Local $iResult = DllCall("User32.dll", "hwnd", "GetForegroundWindow")
Return SetError($iResult = 0, 0, $iResult)
EndFunc ;==>_GetForegroundWindow
这是P大教材里的一算代码,有几点以后望各位帮忙解答 谢谢
1 SetError($iResult = 0, 0, $iResult) 和SetError( 0, 0, $iResult) 有何不同 教程里有很多的地方都是类似前者的方式 为什么这样呢?有何意义?
2 如一中的$iResult = 0 ,也就是说这里已经将 $iResult)赋值为0了 后面让seterror返回$iResult 那按理说返回值应该是0啊,但实际测试发现还是原来的值 这又是为何?
3 自定义函数的返回值通过seterror设置了@error的值=0了 那这样的话 回到前面的 if @error 应该执行的是then 后面的语句啊 但是为什么执行的却是else后的语句呢? 自己顶上去 {:face (327):}顶楼主 SetError($iResult = 0, 0, $iResult)
$iResult = 0不是赋值,是$iResult和0比较,如果相等则为true,不相等则为false 回复 4# seniors
嗯谢谢 唉自己琢磨真的是太费劲了 要是有个老师就好了 多看看帮助!
SetError ( code [, extended = 0 [, return value]] )
SetError($iResult = 0, 0, $iResult) 和SetError( 0, 0, $iResult)有什么不同?
第一个返回的@error可能是TRUE也可能是False,就看$iResult 是否等于 0,而第二个直接设置@error=0
你理解这个以后就不会提出后面的两个问题了 回复 6# gto250
问题是帮助里没有第一个问题的答案我才会有了第二个问题的 要是有说$iResult = 0 是判断不是赋值我也不会发帖问了 SetError($iResult = 0, 0, $iResult)中的$iResult = 0不是赋值操作,而是判断是否相等。 学习了,我怎么好像都没有见过SetError($iResult = 0, 0, $iResult) 的实例。 回复 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 楼上说的很精P{:face (303):}
页:
[1]