3

我正在使用数组来根据压力存储蒸汽的属性。现在我有正好 9 个压力的属性,所以我使用的是静态数组。我想更灵活,所以我想切换到动态数组。

当我ReDim foo(1 to i, 1 to 10)在循环中使用时,我完全丢失了除最后一行之外的所有数据。
当我使用ReDim Preserve foo(1 to i, 1 to 10)ReDim Preserve(i,10)程序抛出错误"Runtime error '9': subscript out of range"i从 1 到 9。

如何在不丢失数据的情况下将行/列添加到充满数据的数组中?

4

1 回答 1

6

您只能 Redim 保留 VB6 多维数组中的最终维度。这是来自 MSDN 的信息:

如果包含 Preserve 关键字,Visual Basic 会将元素从现有数组复制到新数组。当您使用 Preserve 时,您只能调整数组的最后一个维度的大小,并且对于每个其他维度,您必须指定与现有数组中已有的大小相同的大小。

例如,如果您的数组只有一个维度,您可以调整该维度的大小并仍然保留数组的内容,因为它是最后一个也是唯一的维度。但是,如果您的数组有两个或多个维度,则如果您使用 Preserve,则只能更改最后一个维度的大小。

以下示例在不丢失数组中任何现有数据的情况下增加动态数组的最后一维的大小,然后在丢失部分数据的情况下减小大小:

 Dim IntArray(10, 10, 10) As Integer 
 ReDim Preserve IntArray(10, 10, 20) 
 ReDim Preserve IntArray(10, 10, 15)
于 2011-06-08T09:43:20.603 回答