找回密码
 加入
搜索
查看: 4206|回复: 8

[AU3基础] 问一下,这种情况下,你们是怎样传递参数的?

  [复制链接]
发表于 2011-4-13 02:34:46 | 显示全部楼层 |阅读模式
au3里的函数再调用其它函数,有些函数不能使“其它函数”有参数,如:AdlibRegister("MyAdlib"):
AdlibRegister函数调用了自定义MyAdlib函数,这时若MyAdlib函数需要参数时怎么办?当然,可以把有AdlibRegister("MyAdlib")函数和MyAdlib函数放在一个au3文件里,然后定义个全局变量解决。

但若AdlibRegister("MyAdlib")在fileA.au3里,而MyAdlib函数在fileB.au3里怎么办呢?
 楼主| 发表于 2011-4-13 02:38:53 | 显示全部楼层
我无论在au3里还是别的语言里,都不喜欢用全局变量,因为这样不利于函数模块化用迁移。
所以凡是我写的程序,几乎都没有全局变量,当然,很多时候,用全局变量会让写代码时少费很多事。
 楼主| 发表于 2011-4-13 13:46:32 | 显示全部楼层
大家也都没有别的办法解决这个问题呀?
发表于 2011-4-13 14:45:08 | 显示全部楼层
比较深奥啊,参数在传递完成以后,原变量符号不是就在被调用函数失效了吗,至于全局变量问题,UDF本身写的时候就考虑这个问题了,尽量避免用$a  $b这样简单的变量,以免跟原函数发生冲突。
发表于 2011-4-13 17:53:10 | 显示全部楼层
不同的脚本文件可以共享全局变量的,在两处都声明一下,效果跟同一文件相同。adlib函数没必要有参数,因为频繁调用的缘故,非要的话可以考虑for循环加sleep,再说这个函数本来的作用就不是用来返回计算值,而是作为状态监测
发表于 2011-4-13 18:06:08 | 显示全部楼层
是不是#include   做成个udf形式  我是这么想的 没有实践过
发表于 2011-4-13 18:46:31 | 显示全部楼层
我写稍大点的程序是这样的:全部变量定义放在一个Variables.au3文件,然后#include
 楼主| 发表于 2011-4-14 23:08:15 | 显示全部楼层
不同的脚本文件可以共享全局变量的,在两处都声明一下,效果跟同一文件相同。adlib函数没必要有参数,因为频 ...
蜘蛛抱蛋 发表于 2011-4-13 17:53


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

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

有时的确需要参数呀,比如监视某个gui窗口的是否存在,只能传递参数,因为这个窗口的标题是不固定的。类名是那种象#32588通用的
发表于 2011-4-14 23:19:41 | 显示全部楼层
本帖最后由 afan 于 2011-4-14 23:23 编辑

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

1.au3
$a = 123
2.au3
#include "1.au3"
Msgbox(0, '', $a)
运行2.au3看看~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 06:58 , Processed in 0.077870 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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