【已解决】--请教Func 没有被调用的可能原因,谢谢
本帖最后由 bhwhui 于 2013-1-20 16:44 编辑函数(片段)如下:
Func mc_cwsz() ;设置
Local $t1 = ""
If not(WinExists("设置起始部位", "")) Then
iniWR("CWSZ---未检测到窗口......")
Return
EndIf
endfunc
主程序如下:
If WinExists("设置起始部位", "") Then
iniWR("Win_Close 发现 初始仓位设置窗口......")
mc_cwsz()
EndIf
很简单的一段代码,为什么我说函数没被执行,因为每次运行,主程序中iniWR("Win_Close 发现 初始仓位设置窗口......")这句写ini文件的自定义函数都被执行了,然后就应该调用Func cwsz(),可是函数没运行!
以前调用函数很正常,我修改了程序其他地方后,函数始终不被调用。弄了2天了,都没搞清楚什么原因。我用的3.3.7.15.1版本。
请大家指点,谢谢。 问自己代码的问题,请上传别人能执行的代码,而不是你所谓的一段,然后描述一堆可能别人看着也云里雾里的文字。这样想帮 你的人也能不费时间地快速重现你所描述的问题。
另外,多余的帖子,请自己删除吧,要是每个人都是这样,管理员那有这么多时间。
点贴子的下面的‘编辑后,点右上角的’删‘就可以了 本帖最后由 bhwhui 于 2013-1-20 16:33 编辑
谢谢先。
我也想传整个代码让大家看清楚,可是太大了,2600多行。并且如果没有运行环境,也运行不起来啊。
用上面的片段运行,定义了几个函数后,我想每次都会正常运行的。问题是在我的整个程序中为什么就不执行了呢?
我的标题说了,是请教大家“可能”的原因,意思是大家能不能从经验上说说,为什么函数突然之间不运行了呢?我改了什么设置了呢。
我改的地方是针对Excel的,和这个函数一点关系都没有啊。
开始我怀疑是版本的问题,初始用的3.3.6.1版本,不行,换了3.3.7.15,不行,又整了3.3.9.0还是不行,以前可以运行的,晕了。
请大家指点,谢谢。 代码最前面加一行
#AutoIt3Wrapper_Run_Debug_Mode=Y
然后看脚本执行到哪行停住 mc_cwsz() 自定义函数中加一句调试对话框,看看运行时能否弹出?
估计是运行了吧,只是因为此函数中if 语句条件不成立,iniWR("CWSZ---未检测到窗口......")一句没有执行到。 回复 2# happytc
说得对,管理员很忙的,像老萧,半年几个月才上一次论坛! 一切基于合理的猜测:
问题出在自定义函数
iniWR()
上面,估计此函数里面没有关闭窗体的代码,所以导致
mc_cwsz()
里面的判断条件不为真~ 本帖最后由 bhwhui 于 2013-1-20 02:29 编辑
mc_cwsz() 自定义函数中加一句调试对话框,看看运行时能否弹出?
估计是运行了吧,只是因为此函数中if 语句 ...
shqf 发表于 2013-1-18 19:07 http://www.autoitx.com/images/common/back.gif
加了,函数就是没被调用,早就用了,这是最基本的调试手段啊。
其实我的问题就1句话,主程序明明调用了函数,函数为什么没被执行呢?
哪位能从经验上说说,谢谢。 回复 8# bhwhui
上码……………… 一切基于合理的猜测:
问题出在自定义函数
iniWR()
上面,估计此函数里面没有关闭窗体的代码,所以导致
...
annybaby 发表于 2013-1-18 21:19 http://www.autoitx.com/images/common/back.gif
您猜到了一半,因为您不懂我的程序是干什么的,算是猜对了。谢谢 本帖最后由 bhwhui 于 2013-1-20 16:37 编辑
又弄了1天,找到问题所在了。
程序递归运行了!
函数确实执行了,只不过函数(例如A)在执行之前,它会检测运行环境,不对时,会调其他的函数(B)修改,其他函数(B)改好了之后,又会调A配置,导致递归调用,表现看上去就是A函数的实体部分没有被执行!呵呵
如果Autoit有单步跟踪,或断点执行,这个问题应该比较快找到(我们就不讨论在几十个函数的稍微大点的程序中使用msgbox,consolewrite 等的原始调试手段了)。
谢谢大家的帮助! 重新修改帖子后,分类里面没有 “已解决”这项啊???
页:
[1]