数组 – ReDim在Visual Basic 6中保存为多维数组
我使用VB6,我需要做一个ReDim保存到一个多维数组:
Dim n,m As Integer n = 1 m = 0 Dim arrCity() As String ReDim arrCity(n,m) n = n + 1 m = m + 1 ReDim Preserve arrCity(n,m) 每当我这样做,我写了它,我得到以下错误:
因为我只能改变最后的数组维度,在我的任务中,我必须改变整个数组(在我的例子中为2个维度)! 是否有任何解决方法或其他解决方案?
正确指出,ReDim只能保留阵列的最后一个维度(MSDN上的
ReDim Statement):
因此,决定的第一个问题是二维数组是否是该作业的最佳数据结构.可能,一维数组是更适合您需要做的ReDim Preserve? 另一种方法是按照Pieter Geerkens’s suggestion使用锯齿形阵列.在VB6中没有直接支持锯齿状数组.在VB6中编写“数组数组”的一种方法是声明一个Variant数组,并使每个元素成为所需类型的数组(在你的情况下为String).演示代码如下. 另一个选择是自己实现Preserve部分.为此,您需要创建要保留的数据副本,然后使用它填充重新定义的数组. Option Explicit Public Sub TestMatrixResize() Const MAX_D1 As Long = 2 Const MAX_D2 As Long = 3 Dim arr() As Variant InitMatrix arr,MAX_D1,MAX_D2 PrintMatrix "Original array:",arr ResizeMatrix arr,MAX_D1 + 1,MAX_D2 + 1 PrintMatrix "Resized array:",arr End Sub Private Sub InitMatrix(a() As Variant,n As Long,m As Long) Dim i As Long,j As Long Dim StringArray() As String ReDim a(n) For i = 0 To n ReDim StringArray(m) For j = 0 To m StringArray(j) = i * (m + 1) + j Next j a(i) = StringArray Next i End Sub Private Sub PrintMatrix(heading As String,a() As Variant) Dim i As Long,j As Long Dim s As String Debug.Print heading For i = 0 To UBound(a) s = "" For j = 0 To UBound(a(i)) s = s & a(i)(j) & "; " Next j Debug.Print s Next i End Sub Private Sub ResizeMatrix(a() As Variant,m As Long) Dim i As Long Dim StringArray() As String ReDim Preserve a(n) For i = 0 To n - 1 StringArray = a(i) ReDim Preserve StringArray(m) a(i) = StringArray Next i ReDim StringArray(m) a(n) = StringArray End Sub (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |