我使用数组根据蒸汽的压力存储蒸汽的特性。现在我有9个压力的性质,所以我使用静态数组。我想变得更灵活,所以我想切换到动态数组。
当我在循环中使用ReDim foo(1 to i, 1 to 10)
时,我完全丢失了除最后一行之外的所有数据
当我使用ReDim Preserve foo(1 to i, 1 to 10)
或ReDim Preserve(i,10)
程序时,抛出的错误"运行时错误'9':下标超出范围"。CCD_ 4从1变为9。
如何在不丢失数据的情况下将行/列添加到充满数据的数组中?
在VB6多维数组中,只能对最终维度进行Redim Preserve。以下是MSDN的信息:
如果包含Preserve关键字,Visual Basic从中复制元素将现有数组转换为新数组。使用"保留"时,可以调整大小仅阵列的最后维度,对于其他维度,你必须指定与现有大小相同的大小在现有阵列中。
例如,如果您的数组只有一维,您可以调整其大小维度,并且仍然保留数组的内容,因为它是最后也是唯一的维度。然而如果您的数组有两个或多个尺寸,可以更改如果使用保护
以下示例增加了的最后一个维度的大小动态数组而不丢失任何数组中的现有数据,然后使用部分数据减小大小损失:
Dim IntArray(10, 10, 10) As Integer
ReDim Preserve IntArray(10, 10, 20)
ReDim Preserve IntArray(10, 10, 15)