找回密码
 加入
搜索
查看: 5325|回复: 11

[系统综合] 【已解决】--请教Func 没有被调用的可能原因,谢谢

  [复制链接]
发表于 2013-1-18 16:58:13 | 显示全部楼层 |阅读模式
本帖最后由 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版本。
请大家指点,谢谢。

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2013-1-18 17:29:02 | 显示全部楼层
问自己代码的问题,请上传别人能执行的代码,而不是你所谓的一段,然后描述一堆可能别人看着也云里雾里的文字。这样想帮 你的人也能不费时间地快速重现你所描述的问题。


另外,多余的帖子,请自己删除吧,要是每个人都是这样,管理员那有这么多时间。
点贴子的下面的‘编辑后,点右上角的’删‘就可以了

评分

参与人数 1威望 +2 收起 理由
afan + 2

查看全部评分

 楼主| 发表于 2013-1-18 17:38:48 | 显示全部楼层
本帖最后由 bhwhui 于 2013-1-20 16:33 编辑

谢谢先。

我也想传整个代码让大家看清楚,可是太大了,2600多行。并且如果没有运行环境,也运行不起来啊。
用上面的片段运行,定义了几个函数后,我想每次都会正常运行的。问题是在我的整个程序中为什么就不执行了呢?
我的标题说了,是请教大家“可能”的原因,意思是大家能不能从经验上说说,为什么函数突然之间不运行了呢?我改了什么设置了呢。
我改的地方是针对Excel的,和这个函数一点关系都没有啊。
开始我怀疑是版本的问题,初始用的3.3.6.1版本,不行,换了3.3.7.15,不行,又整了3.3.9.0还是不行,以前可以运行的,晕了。
请大家指点,谢谢。
发表于 2013-1-18 18:28:27 | 显示全部楼层
代码最前面加一行
#AutoIt3Wrapper_Run_Debug_Mode=Y
然后看脚本执行到哪行停住
发表于 2013-1-18 19:07:05 | 显示全部楼层
mc_cwsz() 自定义函数中加一句调试对话框,看看运行时能否弹出?
估计是运行了吧,只是因为此函数中if 语句条件不成立,iniWR("CWSZ---未检测到窗口......")一句没有执行到。
发表于 2013-1-18 21:00:49 | 显示全部楼层
回复 2# happytc


    说得对,管理员很忙的,像老萧,半年几个月才上一次论坛!
发表于 2013-1-18 21:19:11 | 显示全部楼层
一切基于合理的猜测:
问题出在自定义函数
iniWR()
上面,估计此函数里面没有关闭窗体的代码,所以导致
mc_cwsz()
里面的判断条件不为真~
 楼主| 发表于 2013-1-20 02:28:27 | 显示全部楼层
本帖最后由 bhwhui 于 2013-1-20 02:29 编辑
mc_cwsz() 自定义函数中加一句调试对话框,看看运行时能否弹出?
估计是运行了吧,只是因为此函数中if 语句 ...
shqf 发表于 2013-1-18 19:07



加了,函数就是没被调用,早就用了,这是最基本的调试手段啊。

其实我的问题就1句话,主程序明明调用了函数,函数为什么没被执行呢?

哪位能从经验上说说,谢谢。
发表于 2013-1-20 07:43:30 | 显示全部楼层
回复 8# bhwhui


   

上码………………
 楼主| 发表于 2013-1-20 16:21:29 | 显示全部楼层
一切基于合理的猜测:
问题出在自定义函数
iniWR()
上面,估计此函数里面没有关闭窗体的代码,所以导致
  ...
annybaby 发表于 2013-1-18 21:19



您猜到了一半,因为您不懂我的程序是干什么的,算是猜对了。谢谢
 楼主| 发表于 2013-1-20 16:29:56 | 显示全部楼层
本帖最后由 bhwhui 于 2013-1-20 16:37 编辑

又弄了1天,找到问题所在了。

程序递归运行了!

函数确实执行了,只不过函数(例如A)在执行之前,它会检测运行环境,不对时,会调其他的函数(B)修改,其他函数(B)改好了之后,又会调A配置,导致递归调用,表现看上去就是A函数的实体部分没有被执行!呵呵

如果Autoit有单步跟踪,或断点执行,这个问题应该比较快找到(我们就不讨论在几十个函数的稍微大点的程序中使用msgbox,consolewrite 等的原始调试手段了)。

谢谢大家的帮助!
 楼主| 发表于 2013-1-20 16:43:24 | 显示全部楼层
重新修改帖子后,分类里面没有 “已解决”这项啊???
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 13:55 , Processed in 0.088279 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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