vb 可变长 数组

简介: 引用:http://www.cnblogs.com/liwenqiang/archive/2010/07/29/1787690.html 关键点:Dim   str()   As   string    '定义           redim   str(n)                  '重设长度    or     redim   Preserve  str(n)    '重设长度,并保持原来记录不变   详细阐述:ReDim   语句 在过程级别中使用,用于为动态数组变量重新分配存储空间。

引用:http://www.cnblogs.com/liwenqiang/archive/2010/07/29/1787690.html

关键点:Dim   str()   As   string    '定义
           redim   str(n)                  '重设长度

   or     redim   Preserve  str(n)    '重设长度,并保持原来记录不变

 




详细阐述:

ReDim   语句 

在过程级别中使用,用于为动态数组变量重新分配存储空间。 

语法 

ReDim   [Preserve]   varname(subscripts)   [As   type]   [,   varname(subscripts)   [As   type]]   .   .   . 

ReDim   语句的语法包括以下几个部分: 

部分   描述   
Preserve   可选的。关键字,当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。   
varname   必需的。变量的名称;遵循标准的变量命名约定。   
subscripts   必需的。数组变量的维数;最多可以定义   60   维的多维数组。subscripts   参数使用下面的语法:   
    [lower   To]   upper   [,[lower   To]   upper]   .   .   .   
    如果不显式指定   lower,则数组的下界由   Option   Base   语句控制。如果没有   Option   Base   语句则下界为   0。   
type   可选的。变量的数据类型;可以是   Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String   *   length(对定长的字符串)、Object、Variant、用户定义类型或对象类型。所声明的每个变量都要有一个单独的   As   type   子句。对于包含数组的   Variant   而言,type   描述的是该数组的每个元素的类型,不能将此   Variant   改为其它类型。   


说明 

ReDim   语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的   Private、Public   或   Dim   语句声明过的动态数组的大小。 

可以使用   ReDim   语句反复地改变数组的元素以及维数的数目,但是不能在将一个数组定义为某种数据类型之后,再使用   ReDim   将该数组改为其它数据类型,除非是   Variant   所包含的数组。如果该数组确实是包含在某个   Variant   中,且没有使用   Preserve   关键字,则可以使用   As   type   子句来改变其元素的类型,但在使用了此关键字的情况下,是不允许改变任何数据类型的。 

如果使用了   Preserve   关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。例如,如果数组就是一维的,则可以重定义该维的大小,因为它是最末维,也是仅有的一维。不过,如果数组是二维或更多维时,则只有改变其最末维才能同时仍保留数组中的内容。下面的示例介绍了如何在为已有的动态数组增加其最末维大小的同时而不清除其中所含的任何数据。 

ReDim   X(10,   10,   10) 
.   .   . 
ReDim   Preserve   X(10,   10,   15) 

同样地,在使用   Preserve   时,只能通过改变上界来改变数组的大小;改变下界则会导致错误。 

如果将数组改小,则被删除的元素中的数据就会丢失。如果按地址将数组传递给某个过程,那么不要在该过程内重定义该数组的各维的大小。 

在初始化变量时,数值变量被初始化为   0,变长的字符串被初始化为一个零长度的字符串   ( " "),而定长的字符串则用   0   填充。Variant   变量被初始化为   Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。在使用引用对象的变量之前,必须使用   Set   语句将一个已有的对象赋给该变量。在被赋值之前,所声明的对象变量有一个特定值   Nothing,这个值表示该变量没有指向任何对象的实例。 

小心   如果   ReDim   语句所使用的变量在模块级别或过程级别不存在,则该语句就相当于一个声明语句。如果此后在一个更广的范围内又创建了同名的变量,即使使用了   Option   Explicit,ReDim   也将使用后声明的这个变量,且不会导致编译错误。为了避免这种冲突,就不应把   ReDim   作为声明语句使用,而只应作为重定义数组大小的语句。 

注意   要改变   Variant   所包含的数组的大小,必须在试图改变其数组大小之前显式声明该   Variant   变量。

相关文章
|
算法 计算机视觉
图像处理常用算法—6个算子 !!
图像处理常用算法—6个算子 !!
647 2
|
存储 iOS开发 Windows
利用Dism修复系统步骤,以及dism找不到源文件解决方案
利用Dism修复系统步骤,以及dism找不到源文件解决方案
13161 0
利用Dism修复系统步骤,以及dism找不到源文件解决方案
|
弹性计算 固态存储 大数据
2024阿里云服务器租用价格表(一年/按月/按小时报价明细)
阿里云服务器2024年最新租用价格表显示,轻量应用服务器2核2G3M带宽一年82元(约6.8元/月),2核4G4M带宽轻量服务器一年298元。新老用户共享99元一年的2核2G3M带宽ECS经济型e实例服务器与199元一年的企业专享2核4G5M带宽ECS u1实例服务器优惠。4核16G10M带宽游戏服务器70元/月,8核32G10M带宽160元/月。GPU服务器如gn6v和gn6i等提供新用户专享折扣。续费折扣方面,续费一年享有7.5折,续费五年则有3折优惠。按小时计费的云服务器ECS实例中,如ecs.u1-c1m4.large(2核8G)每小时0.45元。
29495 17
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之delete主键删除源表一条记录,目标表未删除数据问题如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
520 1
|
开发者 Python
Python 编程入门:从零到一实现简单计算器
【8月更文挑战第31天】在这个数字技术日益发展的时代,编程已成为一项基础技能。本文通过构建一个简单的Python计算器项目,引导初学者步入编程世界的大门。我们将一起学习如何定义函数、处理用户输入以及执行基本算术操作,最终实现一个能够进行加减乘除运算的小工具。无论你是编程新手还是想复习基础知识的开发者,这篇文章都将为你提供一次愉快的编程体验。
|
缓存 C++ Windows
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
uni-app 98修改群名称功能(二)
uni-app 98修改群名称功能(二)
69 1
uni-app 98修改群名称功能(二)
|
关系型数据库 MySQL 索引
面试官:MySQL中COLLATE是用来做什么的?
面试官:MySQL中COLLATE是用来做什么的?
740 0
面试官:MySQL中COLLATE是用来做什么的?
|
传感器 物联网 芯片
5_2_1_光照信息屏_硬件详解|学习笔记
快速学习5_2_1_光照信息屏_硬件详解。
413 0
5_2_1_光照信息屏_硬件详解|学习笔记
|
关系型数据库 数据库 Web App开发
Docker搭建Oracle数据库
欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! 使用 sudo docker search Oracle 命令搜索Oracle数据库镜像文件,这里发现已经有人发布了相关镜像,链接:https://hub.docker.com/r/sath89/oracle-12c/,直接按照说明,使用pull命令下载镜像。
4708 0