cashiba 发表于 2016-10-25 21:16:53

关于AU3的动态数组,还是有些模糊...?[已解决]

本帖最后由 cashiba 于 2017-3-18 09:39 编辑

VB里对动态数组有相对多的描述。如下:
建立动态数组的方法是:
利用Dim语句声明括号内为空的数组,然后在过程中用ReDim语句指明该数组的大小。
语法是:
ReDim数组名[下标1[,下标2…]]
其中下标可以是常量,也可以是有了确定值的变量。
例:
Dim $Arr[]
……
ReDim #arr

2.注意事项
(1)在动态数组ReDim语句中的下标可以是常量,也可以是有了确定值的变量;
(2)在过程中可以多次使用ReDim来改变数组的大小,也可改变数组的维数。
(3)每次使用ReDim语句都会使原来数组中的值丢失.
   可以在ReDim语句后加Preserve参数来保留数组中的数据
   但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。
{:face (189):}
在AU3里好像讲得很少,找到Redim的描述。如下:

ReDim
调整现有数组的大小.
ReDim 数组[索引 1]...[索引 n]

参 数
数组 目标数组名称.
索引 数组维数的元素数量, 元素索引 0 到 n-1.

备 注
关键字 ReDim 的作用类似 Global/Local, 但 ReDim 调整数组大小时保存数组的值, 而不是删除值.
数组的维数必须保持一致, 否则 ReDim 将丢失旧的数组内容.
数组调整大小后其作用域(Global 或者 Local)维持不变.
{:face (52):}
基本上都是概念性的讲述,总感觉不是太明晰。
不知道VB和AU3的动态数组,是不是区别不大---------------------------------------------------
以二维数组为例,VB里比较强调以下3点:
1、ReDim[]中的下标必须有确定值(常量或已赋值变量),否则留空
2、只能改变第二维大小
3、要用Preserve来保留原数组数据

chamlien 发表于 2016-10-25 23:16:20

redim就是重新定义的意思

cashiba 发表于 2016-10-26 15:20:39

redim就是重新定义的意思
chamlien 发表于 2016-10-25 23:16 http://www.autoitx.com/images/common/back.gif
同样是redim,用起来不一定没区别吧,好像AU3里几乎没有动态数组和静态数组这些概念。如果真没区别就好了....

gto250 发表于 2016-10-26 17:58:28

你自己写个试一下不就知道了

chamlien 发表于 2016-10-26 22:36:57

没什么区别的,AU3对变量、数组的定义都是弱语言,没必要这么纠结吧

chishingchan 发表于 2016-10-27 08:00:54

有没有考虑使用 Dictionary 对象?
http://www.autoitx.com/thread-37424-1-1.html

cashiba 发表于 2016-10-27 11:25:28

有没有考虑使用 Dictionary 对象?
chishingchan 发表于 2016-10-27 08:00 http://www.autoitx.com/images/common/back.gif
感谢chishingchan老师指点!
因为对VB及VBA有一些些了解,所以对字典也不算陌生,用起来确实很方便。
只是现在刚开始接触AU3,在了解和熟悉AU3的思维和语言规则的阶段,暂时还不能两边自由飘移哇,不然的话,搞不好就有点晕菜,混为一团,出问题都不知道咋回事
{:face (319):}

cashiba 发表于 2016-10-27 11:29:49

没什么区别的,AU3对变量、数组的定义都是弱语言,没必要这么纠结吧
chamlien 发表于 2016-10-26 22:36 http://www.autoitx.com/images/common/back.gif
倒也不是纠结啥,只是想概念上明晰一些,至少能知道官方在那三点上有什么异同吧。赶脚AU3的数组从形式到定义都有特点,知道得清楚些以后也好少出点错....
页: [1]
查看完整版本: 关于AU3的动态数组,还是有些模糊...?[已解决]