找回密码
 加入
搜索
查看: 4868|回复: 14

[AU3基础] 如何让自定义函数返回多个值,并且返回值可以赋值给变量?

 火.. [复制链接]
发表于 2011-3-20 17:30:13 | 显示全部楼层 |阅读模式
本帖最后由 fjw18 于 2011-3-20 18:11 编辑

我的意思是自定义一个函数,这个函数可以返回多个值,并且这些值可以赋值给外部变量。
就像软件集成的WinGetPos函数一样,可以返回多个数组值,谢谢!
发表于 2011-3-20 20:08:32 | 显示全部楼层
自定义函数返回多个值示例
#Include <WinAPI.au3>
$Get = WinGetEX("输入窗口标题",'')
MsgBox(0, "鼠标状态 (X坐标,Y坐标", $Get[1] & ",                                        " & $Get[2])
MsgBox(0, "活动窗口状态 (宽度,高度):", $Get[3] & ",                                      " & $Get[4])
MsgBox(0, "活动窗口文本", $Get[5]& "                                    "&$Get[0])
Func WinGetEX($x,$y)
        Dim $EX[6]
$EX[0] ='自定义数组文字'
$EX[1] =_WinAPI_GetMousePosX()
$EX[2] =_WinAPI_GetMousePosy()
$EX[3] =_WinAPI_GetWindowWidth(WinGetHandle($x,$y))
$EX[4] =_WinAPI_GetWindowHeight(WinGetHandle($x,$y))
$EX[5] =_WinAPI_GetWindowText(WinGetHandle($x,$y))
 Return $EX
EndFunc


更详细资料请参考帮助文档:Func...Return...EndFunc
return如何返回多个变量
发表于 2011-3-20 20:32:09 | 显示全部楼层
没看懂你的意思,貌似你知道开始运行一遍你的这个WinGetEX($x,$y)
定义 一下全局变量
不需要返回什么 你的函数变量就都被赋值了啊
不用返回的
是我没理解你的意思吗
发表于 2011-3-20 20:34:21 | 显示全部楼层
另外 你确定你这个函数能运行起来吗?
我怎么看到那么多不规范的地方呢
发表于 2011-3-20 20:53:34 | 显示全部楼层
没看懂你的意思,貌似你知道开始运行一遍你的这个WinGetEX($x,$y)
定义 一下全局变量
不需要返回什么 你的 ...
love5173 发表于 2011-3-20 20:32

这是在说中文吗?让人百思不得其解啊.
貌似机器翻译的对白.

评分

参与人数 1金钱 +10 收起 理由
afan + 10 我很赞同

查看全部评分

发表于 2011-3-20 21:15:23 | 显示全部楼层
另外 你确定你这个函数能运行起来吗?
我怎么看到那么多不规范的地方呢
love5173 发表于 2011-3-20 20:34



呵呵
你测试一下就知道能否运行了
另外
在下请教一下您:代码哪些地方有不规范?
发表于 2011-3-20 21:18:03 | 显示全部楼层
回复 6# lynfr8

有啊~~Dim 改为 Local
发表于 2011-3-20 21:44:04 | 显示全部楼层
请来解决楼主的问题,不要拿我说事可以吗
我看帖子的时候不知道怎么一下就看见2楼的函数了,发现不需要返回什么
至于说不规范,我想是我表达有误,因为输出效果看起来不美观
因为是错把2楼看成1楼 函数没测试,我的失误
发表于 2011-3-20 21:47:26 | 显示全部楼层
回复 8# love5173
呵呵,原来如此.
这就难怪了.SORRY
发表于 2011-3-20 22:08:51 | 显示全部楼层
回复 9# 3mile


    一笑泯恩仇啦
以后大家看帖都要认真
发表于 2011-3-20 22:12:04 | 显示全部楼层
请来解决楼主的问题,不要拿我说事可以吗
我看帖子的时候不知道怎么一下就看见2楼的函数了,发现不需要返回 ...
love5173 发表于 2011-3-20 21:44



   我是故意打过几个空格的,否则标题看不完整
   测试就得再费力气对比代码才理解输出的结果
   至于那个Dim,呵呵....谢谢7楼提醒。
发表于 2011-3-20 22:18:20 | 显示全部楼层
我是故意打过几个空格的,否则标题看不完整
   测试就得再费力气对比代码才理解输出的结果
   至 ...
lynfr8 发表于 2011-3-20 22:12


你们都是高手,本来我也是热心肠,想多帮人的,结果因为不仔细犯错,希望以后能得到大家的帮助,我主要是着急赚查看权限,sorry
发表于 2011-3-20 22:34:51 | 显示全部楼层
自定义函数返回多个值示例



更详细资料请参考帮助文档:Func...Return...EndFunc

lynfr8 发表于 2011-3-20 20:08


这点我还真不清楚。au3是否跟C/C++一样,返回的名空间外的数组变量(这里是返回的局域变量数组),是否存在隐在的问题。反正在C里,这样返回肯定会在特别情况下出问题的。当然把$EX数组设为全局变量肯定没有问题。一直想问这样的问题呢
 楼主| 发表于 2011-3-21 09:02:22 | 显示全部楼层
谢谢各位热心的帮助,我现在明白了,我看了帮助了,不过,真的没有看太清楚,现在我明白了,其实就是这样的:
定义函数,定义数组,给数组赋值,返回数组,最后把函数值赋值给数组。
发表于 2011-3-21 11:05:51 | 显示全部楼层
func function( , $itype)
switch $istyle
   case 1
     return $ret
   case 2
.....
endswitch
endfunc
$ret可以定义为数组,返回就是了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 10:57 , Processed in 0.098545 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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