annybaby 发表于 2011-6-8 16:11:29

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

本帖最后由 annybaby 于 2011-6-8 19:50 编辑

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

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

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

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

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

;数组维度定义测试
#include<array.au3>
#include<file.au3>
Global $array
_FileReadToArray(@DesktopDir & '\test.txt', $array)
Global $test[$array]
For $i = 1 To $array
        $array[$i] = StringRegExpReplace($array[$i], '\s+'," ");就是这里了,少了一个'+'
        $str = StringSplit($array[$i]," ")
        For $j = 1 To $str
                $test[$i-1][$j-1] = $str[$j]
        Next
Next

kevinch 发表于 2011-6-8 16:34:37

本帖最后由 kevinch 于 2011-6-8 16:35 编辑

如果是redim的话,好像只有最后一维可以变化吧

love5173 发表于 2011-6-8 18:23:15

回复 1# annybaby

$newarray
页: [1]
查看完整版本: 数组维数的定义不能使用变量吗?[已解决]