2011-06-08 155 views
3

我使用數組根據壓力來存儲蒸汽屬性。現在我擁有9個壓力的屬性,所以我使用靜態數組。我想變得更加靈活,所以我想切換到動態數組。vb6:重新調整2D動態數組

當我在循環中使用ReDim foo(1 to i, 1 to 10)時,我完全丟失除最後一行之外的所有數據。
當我使用ReDim Preserve foo(1 to i, 1 to 10)ReDim Preserve(i,10)程序拋出錯誤「運行時錯誤'9':下標超出範圍」i從1變爲9.

如何將行/列添加到數組中而不丟失數據?

+0

爲什麼你的數組2D?存儲蒸汽與壓力的屬性聽起來像幾個一維數組,或者可能是單個用戶定義類型或類的一維數組。 – MarkJ 2011-06-09 18:55:28

回答

6

在VB6多維數組中,您只能保留最終的維。下面是從MSDN的信息:

如果包括保留關鍵字, 的Visual Basic副本從 元素現有陣列到新陣列。 使用Preserve時,只能調整 的數組大小 ,而對於其他所有維度,必須指定 與現有數組中已有的 相同的大小。

例如,如果你的數組只有 一個維度,您可以調整該 尺寸仍然保持陣列的 內容,因爲它是 最後一次也是唯一尺度。但是,如果您的陣列具有兩個或更多個 尺寸,則可以使用 保留更改 尺寸的最後尺寸。

以下示例增大 尺寸 動態陣列的最後一維的而不會在陣列中丟失任何 現有的數據,然後 減少了與局部數據 損失大小:

Dim IntArray(10, 10, 10) As Integer 
ReDim Preserve IntArray(10, 10, 20) 
ReDim Preserve IntArray(10, 10, 15) 
+0

因此,'ReDim保留IntArray(20,10,10)'將會失敗,只有'ReDim保留IntArray(10,10,20)'會工作,對吧? – Crowley 2011-06-08 10:00:32

+0

@Crowley是的沒錯 – hawbsl 2011-06-08 10:03:01

+0

謝謝。我必須彎曲不同的分支:) – Crowley 2011-06-08 10:18:46