happytc 发表于 2011-4-13 02:34:46

问一下,这种情况下,你们是怎样传递参数的?

au3里的函数再调用其它函数,有些函数不能使“其它函数”有参数,如:AdlibRegister("MyAdlib"):
AdlibRegister函数调用了自定义MyAdlib函数,这时若MyAdlib函数需要参数时怎么办?当然,可以把有AdlibRegister("MyAdlib")函数和MyAdlib函数放在一个au3文件里,然后定义个全局变量解决。

但若AdlibRegister("MyAdlib")在fileA.au3里,而MyAdlib函数在fileB.au3里怎么办呢?

happytc 发表于 2011-4-13 02:38:53

我无论在au3里还是别的语言里,都不喜欢用全局变量,因为这样不利于函数模块化用迁移。
所以凡是我写的程序,几乎都没有全局变量,当然,很多时候,用全局变量会让写代码时少费很多事。

happytc 发表于 2011-4-13 13:46:32

大家也都没有别的办法解决这个问题呀?

love5173 发表于 2011-4-13 14:45:08

比较深奥啊,参数在传递完成以后,原变量符号不是就在被调用函数失效了吗,至于全局变量问题,UDF本身写的时候就考虑这个问题了,尽量避免用$a$b这样简单的变量,以免跟原函数发生冲突。

蜘蛛抱蛋 发表于 2011-4-13 17:53:10

不同的脚本文件可以共享全局变量的,在两处都声明一下,效果跟同一文件相同。adlib函数没必要有参数,因为频繁调用的缘故,非要的话可以考虑for循环加sleep,再说这个函数本来的作用就不是用来返回计算值,而是作为状态监测

haijie1223 发表于 2011-4-13 18:06:08

是不是#include   做成个udf形式我是这么想的 没有实践过

zitoy 发表于 2011-4-13 18:46:31

我写稍大点的程序是这样的:全部变量定义放在一个Variables.au3文件,然后#include

happytc 发表于 2011-4-14 23:08:15

不同的脚本文件可以共享全局变量的,在两处都声明一下,效果跟同一文件相同。adlib函数没必要有参数,因为频 ...
蜘蛛抱蛋 发表于 2011-4-13 17:53 http://www.autoitx.com/images/common/back.gif

这是没有办法的办法呀,因为au3没有多线程,只能它来模拟实现这个功能呀

对了,你确定你说的“不同的脚本文件可以共享全局变量的,在两处都声明一下,效果跟同一文件相同”?

有时的确需要参数呀,比如监视某个gui窗口的是否存在,只能传递参数,因为这个窗口的标题是不固定的。类名是那种象#32588通用的

afan 发表于 2011-4-14 23:19:41

本帖最后由 afan 于 2011-4-14 23:23 编辑

全局变量本来就可以在不同的脚本文件中,也不用两处都声明一下…

1.au3$a = 1232.au3#include "1.au3"
Msgbox(0, '', $a)运行2.au3看看~
页: [1]
查看完整版本: 问一下,这种情况下,你们是怎样传递参数的?