Kye 发表于 2015-12-28 15:39:01

vb6请前辈帮忙讲解动态数组初始化 此段代码的理解 谢谢!

本帖最后由 Kye 于 2015-12-28 16:17 编辑

'http://zhidao.baidu.com/link?url=GsP_Dv75fFTYxZBhdlLL1SPCIjCq6lPqwy4Scq-DyX-htSK2YutP6G2tZWTBAsY8-wzXYcms9LEK7rJJT9QHhxl4iMs3FLVqFi52WwPN793

Private Sub Command2_Click()
Dim a() As String
Dim J1() As String
Dim i As Long
Dim n As Long
J1 = Split("ad|fg|af|ssww|wwww|w", "|")
'Print UBound(J1)
   ’ReDim a(2, UBound(J1))

For n = 0 To UBound(J1)
    ReDim Preserve a(2, n) ' Preserve 保留动态数组原来的项,这里原来的项
                                       ' 是什么?似乎理解了,可能是For循环中产生的,之前的项需要保留
   a(2, n) = J1(n)
   Debug.Print a(2, n)
Next

Print UBound(a)'我实在不理解 为什么是 2,而不是5


'以下为测试数组内容
Dim Tmp As String
For i = 0 To UBound(J1)
   Tmp = Tmp & a(2, i) & vbCrLf
Next
MsgBox Tmp
End Sub


zzyong00 发表于 2015-12-28 21:00:21

ReDim Preserve a(2, n)
redim 改变数组所占内存的大小,意思是数据所占的空间(内存)变多,既然变多了,原来有数据的部分,就存在保留或不保留,所以有preserve
UBound(a) 默认是第一维的上界,所以是2
如果是UBound(a,2) ,你可以试试........
页: [1]
查看完整版本: vb6请前辈帮忙讲解动态数组初始化 此段代码的理解 谢谢!