大家帮我解决一个动态二维数组扩容的问题

fengyin520 2005-12-11 04:43:07
举个例子程序如下:运行时停在ReDim Preserve a(1, 2)这行,说下标越界,要是一维数组这样扩好象没问题,但不知这个问题出在哪里,怎么解决.
Private Sub Command1_Click()
Dim a() As String

ReDim Preserve a(0, 2)
a(0, 0) = "fdf"

ReDim Preserve a(1, 2)
a(1, 0) = "fdfdf"

Text1.Text = a(0, 0)
Text2.Text = a(1, 0)
End Sub
...全文
341 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mylzw 2005-12-11
  • 打赏
  • 举报
回复
楼主快揭帖啊。 我要加入faq,把我的性欲分恢复到100~
mylzw 2005-12-11
  • 打赏
  • 举报
回复
java里的二维数组用的就是这个方法。
这样一来二维数组不仅是矩形的,而且可以是三角形,菱形。
mylzw 2005-12-11
  • 打赏
  • 举报
回复
用一个存储一维数组的一维数组,不就是二维数组了。而且这个二维数组是动态的。 ;)

更改后你的代码:
Private Sub Command1_Click()
'存储一维数组的一维数组,相当于二维数组的第一个纬度值
Dim a() As Variant
Dim val() As String '做为值的一维数组

ReDim Preserve a(1) As Variant '二维为1
ReDim Preserve val(2) As String '一维为2
a(0) = val '设置二维值为一维
a(0)(0) = "fdf" '设置值

'重设二维为2
ReDim Preserve a(2) As Variant
a(1) = val '设置新增加的纬度值为一维
a(1)(0) = "fdfdf"

Text1.Text = a(0)(0)
Text2.Text = a(1)(0)

End Sub



fengyin520 2005-12-11
  • 打赏
  • 举报
回复
哎,那就没有其他什么办法了吗,我必须得扩呀,要不先把a(i,j)中的i定义足够大,然后在需要的时候写入值,这样的话太浪费空间了,在程序里还得加代码看a(i,j)里是否有值.哪位高手有其他什么办法.我的程序里a(i,j)中的i是不定大小的,也许是0也许是1000.
rainstormmaster 2005-12-11
  • 打赏
  • 举报
回复
ReDim a(i, j)
之后
只能改变j的值

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧