社区
VB基础类
帖子详情
在VB中如何动态地添加,删除数组?
abiaozsh
2003-12-03 05:47:28
在VB中如何动态地添加,删除数组?
...全文
1027
6
打赏
收藏
在VB中如何动态地添加,删除数组?
在VB中如何动态地添加,删除数组?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
northwolves
2003-12-03
打赏
举报
回复
做什么用?
abiaozsh
2003-12-03
打赏
举报
回复
我不是要动态数组,而是动态地添加/删除"整个"数组.
踏平扶桑
2003-12-03
打赏
举报
回复
动态数组
数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。
动态数组就可以在任何时候改变大小。在 Visual Basic 中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。
如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。
要创建动态数组,请按照以下步骤执行:
(如果希望数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。
Dim DynArray ()
用 ReDim 语句分配实际的元素个数。
ReDim DynArray (X + 1)
ReDim 语句只能出现在过程中。与 Dim 语句、Static 语句不同,ReDim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。
ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。
ReDim DynArray (4 to 12)
例如,用第一次声明在模块级所建立的动态数组 Matrix1:
Dim Matrix1 () As Integer
然后,在过程中给数组分配空间:
Sub CalcValuesNow ()
.
.
.
ReDim Matrix1 (19, 29)
End Sub
这里的 ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组的边界:
ReDim Matrix1 (X, Y)
注意 您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 Unicode 平台上的字节数是它在非 Unicode 平台上的两倍。
保留动态数组的内容
每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。
在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim 语句就可做到这点。例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:
ReDim Preserve DynArray (UBound (DynArray) + 1)
在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:
ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)
而不可这样编程:
ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)
详细信息 关于动态数组的更详细信息,请参阅语言参考中的“ReDim 函数”。关于对象数组,请参阅“用对象编程”。
Erase 语句
重新初始化大小固定的数组的元素,以及释放动态数组的存储空间。
语法
Erase arraylist
所需的 arraylist 参数是一个或多个用逗号隔开的需要清除的数组变量。
说明
Erase 根据是固定大小(常规的)数组还是动态数组,来采取完全不同的行为。Erase 无需为固定大小的数组恢复内存。Erase 按下表来设置固定数组的元素:
数组类型 Erase 对固定数组元素的影响
固定数值数组 将每个元素设为 0。
固定字符串数组(长度可变) 将每个元素设为零长度字符串 ("")。
固定字符串数组(长度固定) 将每个元素设为 0。
固定 Variant 数组 将每个元素设为 Empty。
用户定义类型的数组 将每个元素作为单独的变量来设置。
对象数组 将每个元素设为特定值 Nothing。
Erase 释放动态数组所使用的内存。在下次引用该动态数组之前,程序必须使用 ReDim 语句来重新定义该数组变量的维数。
FSoft
2003-12-03
打赏
举报
回复
在Redim 语句中加入Preserve关键字可以动态增减数组最后一维的维数
longki
2003-12-03
打赏
举报
回复
在MSDN中看一下楼上所说的,里面都有Example!
xayzmb
2003-12-03
打赏
举报
回复
redim
Erase
vb
动态
数组
在
VB
环境下建立一个
动态
数组
类,可以动
添加
、
删除
数组
成员,获得成员个数
VB
.net 源程序(插入、
删除
、排序、
数组
等)
源程序包括:插入数据、分类统计、冒泡排序、
数组
常用方法、杨辉三角、三角形输出、等经典程序、可在visual studio.net上运行......
计算机二级(
VB
)
该课程面向对象: 备考计算机二级(
VB
)的课程 备课期末考试 自学
VB
程序设计 课程注意提高学习者实战技巧,授课过程
中
以实际操作演示为主,帮助学习者快速地掌握编程的实际方法和技巧。 课程以2019年计算机二级大纲...
VB
程序设计综合复习题
VB
程序设计综合复习题 1、叙述Visual Basic的特点。 2、当窗体上有三个文本框和一个命令按钮,若程序运行时,焦点定位在第三个文本框(Text3)处,应对何控件的什么属性进行何种设置? 3、若要对窗体上的三个文本框输入数据,个控件焦点的移动可通过Tab键(系统本身具有的),也可通过回车键,则要对文本框的什么事件编程? 4、当某文本框输入数据后(按了回车键),进行判断认为数据输入错,怎样
删除
原来数据?怎样使焦点回到文本框重新输入? 5、怎样把关于Command命令按钮的Enabled属性的帮助示例代码复制到你的代码窗口?已知帮助
中
的代码如下: Private Sub Form_Load() Text1.Text = ”” ‘消除文本框的内容 Command1.Caption = “Save” ‘在按钮上放置标题 End Sub Private Sub Text1_Change() If Text1.Text = “” Then ‘查看文本框是否为空 Command1.Enabled = False ‘使按钮无效 Else Command1.Enabled = True ‘使按钮有效 End If End Sub 6、当运行程序前,对某些控件设置属性值,除了在窗体
中
直接设置外,还可以通过代码设置,这些代码一般放在什么事件
中
?例如,程序要将命令按钮定位在窗体的
中
央,请写出事件过程。 7、在KeyPress事件
中
,如何取消用户刚键入的字符? 8、静态
数组
与
动态
数组
的区别是什么?在声明静态
数组
、重定义
动态
数组
时的下标都可以用变量来表示吗? 9、函数过程和子过程的区别是什么? 10、子过程调用有哪两种形式? 11、什么是形参?什么是实参?什么是值引用?什么地址引用?地址引用时,对应的实参有没有限制? 12、如果要时钟控件每半分钟发生一个Timer事件,则Interval属性应设置为多少? 13、如果在KeyDown事件过程
中
将KeyCode设置为0,KeyPress的KeyAscii参数会不会受影响?如果输入的对象是文本框,那文本框的内容是否有影响? 14、构造满足下列条件的Open语句。 (1)建立一个新的顺序文件SEQNEW.DAT,供用户写入数据,指定文件号为1。 (2)打开一个老的顺序文件SEQOLD.DAT,用户将从该文件读出数据,指定文件号为2。 (3)打开一个老的顺序文件SEQAPPEND.DAT,用户将在该文件后面
添加
数据,文件号通过调用FreeFile函数获得。 15、请写出程序代码片段,将磁盘上的两个文件合并。(提示:把它们作为二进制文件打开) 16、PictureBox控件和Image控件有什么区别? 17、Visual Basic可处理哪些格式的图形文件? 18、在程序运行时怎样在图形(像)框
中
装入或
删除
图形? 19、简述Printer对象与Printers集合对象的区别。 20、当要在ToolBar控件
中
添加
一个按钮,如何实现? 21、当要修改ToolBar控件某按钮的图像,如何实现? 22、Visual Basic
中
记录集有几种类型?有
VB
6字典Dictionary比Collection速度慢几倍
Dictionary比Collection慢好多; 采用了高精度计时器进行比较,可以精确到微秒;
添加
速度快1-2倍 读取快3倍
删除
有时快5倍 具体数据量不一样,CPU和电脑不同,结果也不同。 Dictionary,加20万条,用时2371.5783毫秒 Collection,加20万条,用时1789.0249毫秒 Dictionary,读取20万条,用时2273毫秒 Collection,读取20万条,用时667毫秒 Dictionary,
删除
20万条,用时2492毫秒 Collection,
删除
20万条,用时600毫秒
VB基础类
7,759
社区成员
197,606
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章