AUFS 发表于 2011-8-23 04:52:26

[已解决]递归问题,递归之后设置@error的值总是零

本帖最后由 AUFS 于 2011-8-31 03:38 编辑

请问这样的情况怎么解决...我想要的时候达到15之后就只返回15 而不是再往下跳_Aus()
ConsoleWrite('!~:' & @error & @CRLF)


Func _Aus()
Assign('123',Eval('123')+1,2)
If Eval('123') = 15 Then
;~ ConsoleWrite('!~值:' & Eval('123') & @CRLF)
Return SetError(15,1,1)
EndIf
_Aus()
EndFunc

wangsheng108 发表于 2011-8-23 10:00:34

感觉逻辑有点问题,就是Return语句是否可以放在函数结尾。可以改成以下代码试试看:
Func _Aus()
Assign('123',Eval('123')+1,2)
If Eval('123') = 15 Then
    ;~ ConsoleWrite('!~值:' & Eval('123') & @CRLF)
    Return SetError(15,1,1)
else
    Return _Aus()
EndIf
EndFunc

netegg 发表于 2011-8-23 15:19:16

回复 1# AUFS
'往下跳'是什么意思

AUFS 发表于 2011-8-23 16:26:20

回复AUFS
'往下跳'是什么意思
netegg 发表于 2011-8-23 15:19 http://www.autoitx.com/images/common/back.gif


    呵呵...表达问题... 我的意思是在到条件了直接返回 Return

AUFS 发表于 2011-8-23 16:29:43

回复 2# wangsheng108


测试返回的值都是0 而不是达到条件后的15

netegg 发表于 2011-8-23 17:21:40

本帖最后由 netegg 于 2011-8-23 20:33 编辑

回复 5# AUFS
测试了一下,不是返回值有问题,好象是中断的事,加一行#AutoIt3Wrapper_Run_Debug_Mode=y
返回正确,不加的话不返回

AUFS 发表于 2011-8-23 23:58:18

回复AUFS
测试了一下,不是返回值有问题,好象是中断的事,加一行#AutoIt3Wrapper_Run_Debug_Mode=y
返回 ...
netegg 发表于 2011-8-23 17:21 http://www.autoitx.com/images/common/back.gif

加这个这样控制台输出太频繁....达不到效果...最终是输出了正确的值...但这不怎么合意啊...有没有更好的解决办法?

AUFS 发表于 2011-8-31 03:37:54

请问这样的情况怎么解决...我想要的时候达到15之后就只返回15 而不是再往下跳
AUFS 发表于 2011-8-23 04:52 http://www.autoitx.com/images/common/back.gif


不知道这个递归的中断应该怎么完美解决....先结贴吧..没找到满意的答案...望高手来解决
页: [1]
查看完整版本: [已解决]递归问题,递归之后设置@error的值总是零