明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1480|回复: 1

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

[复制链接]
发表于 2015-12-28 15:39:01 | 显示全部楼层 |阅读模式
本帖最后由 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


发表于 2015-12-28 21:00:21 | 显示全部楼层
ReDim Preserve a(2, n)
redim 改变数组所占内存的大小,意思是数据所占的空间(内存)变多,既然变多了,原来有数据的部分,就存在保留或不保留,所以有preserve
UBound(a) 默认是第一维的上界,所以是2
如果是UBound(a,2) ,你可以试试........

点评

Kye
再次谢谢,UBound(a,1) 表示第1维的上界,UBound(a,2) 表示第2维的上界  发表于 2016-1-27 15:28

评分

参与人数 1明经币 +1 收起 理由
Kye + 1 谢谢阿勇老师指导

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-26 23:52 , Processed in 0.158666 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表