找回密码
 加入
搜索
查看: 2676|回复: 2

[AU3基础] 数组维数的定义不能使用变量吗?[已解决]

[复制链接]
发表于 2011-6-8 16:11:29 | 显示全部楼层 |阅读模式
本帖最后由 annybaby 于 2011-6-8 19:50 编辑

查看了帮助
-------------
当你在脚本里使用数组之前, 你必须使用关键字'Dim'来定义它的维数.

-----------------

由于需要对原始数据特定的部分内容进行变换处理,所以用_filereadtoarray('test.txt',$array)读入后还需要再将每行的内容进行分割,所以想将数组的每行内容进行正则替换,字符分割后再赋值到一个新的数组,问题是原始文件行数大小相差较大,本想用$newarray[$array[0]][10]来定义,可惜总是出错,当用常数来定义就没有问题`~

********************************************************************
首先,谢谢楼下两位筒子的回帖,问题已经解决了,原来不是这个原因,数组的维度是可以通过变量来定义的,只要在定义时,该变量的值已经是可以确定

原来出错的原因是:
在使用正则替换原始数据时,因为有用的信息会被空格和(或)制表符(两者的位置和数量都不固定),所以我打算用'\s+'来替换成一个空格,谁知打少了一个'+',只用了'\s',导致后面拆分后的个数大于的$newarray[$array[0]][10]中的[10],越界了,才有了今天的杯具~~
那为什么我改成了常数后又木有问题呢??原来还直接编辑了一下原始的文本文件,将制表符删除了

;数组维度定义测试
#include<array.au3>
#include<file.au3>
Global $array
_FileReadToArray(@DesktopDir & '\test.txt', $array)
Global $test[$array[0]][12] 
For $i = 1 To $array[0]
        $array[$i] = StringRegExpReplace($array[$i], '\s+'," ")  ;就是这里了,少了一个'+'
        $str = StringSplit($array[$i]," ")
        For $j = 1 To $str[0]
                $test[$i-1][$j-1] = $str[$j]
        Next
Next
发表于 2011-6-8 16:34:37 | 显示全部楼层
本帖最后由 kevinch 于 2011-6-8 16:35 编辑

如果是redim的话,好像只有最后一维可以变化吧
发表于 2011-6-8 18:23:15 | 显示全部楼层
回复 1# annybaby

$newarray[UBound($array)][10]
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 01:42 , Processed in 0.073242 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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