新建From1(窗体),新建Command1(按钮CommandButton),代码:
运行结果:
对于二维数组扩容就会发生问题:运行时错误9:下标超出范围。
原因和解决办法:
ReDim Preserve只能是数组的最后一个维度(MSDN上的ReDim语句):
如果使用"保留"关键字,则只能调整最后一个数组维度的大小,并且根本无法更改维度数。例如,如果您的数组只有一个维度,则可以调整该维度的大小,因为它是最后一个维度。但是,如果阵列具有两个或更多维度,则可以仅更改最后一个维度的大小,并仍保留阵列的内容。
因此,要确定的第一个问题是二维数组是否是作业的最佳数据结构.也许,1维阵列更适合您需要做的事情ReDim Preserve?
另一种方法是根据Pieter Geerkens的建议使用锯齿状阵列.在VB6中没有直接支持锯齿状数组.在VB6中编写"数组数组"的一种方法是声明一个数组,Variant并使每个元素成为所需类型的数组(String在您的情况下)。演示代码如下。
另一种选择是自己实现Preserve部分.为此,您需要创建要保留的数据副本,然后使用它填充redimensioned数组。
运行结果:
Original array:
0; 1; 2; 3;
4; 5; 6; 7;
8; 9; 10; 11;
Resized array:
0; 1; 2; 3; ;
4; 5; 6; 7; ;
8; 9; 10; 11; ;
; ; ; ; ;
此二维数组好像每次只能扩容1,多了就出错。