VB语言基础文档格式.docx
《VB语言基础文档格式.docx》由会员分享,可在线阅读,更多相关《VB语言基础文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
5、对象型:
Object━占4字节;
任何Object引用
6、变体型:
Variant━变体型数字占16字节,变体型字符占22字节+字符串长
注:
此类型还包含三种特定值:
Empty;
Null;
Error;
•7、用户定义的数据类型:
•用户可以利用Type语句定义自己的数据类型。
格式如下
•Type数据类型名
•数据类型元素名As类型名
•……
•EndType
•用Type可定义类似于C语言中的结构体类型。
例如:
•TypeDate_Rec
•RYearAsInteger
•RMonthAsString*3
•RDayAsInteger
•注:
记录类型中的元素可以是字符串,但必须是定长字符串,其长度由类型名加上一个星号和常数指明。
•数据类型转换函数:
•函数名及书写格式转换结果
•CBool(表达式)布尔型
•CCur(表达式)货币型
•CByte(表达式)字节型
•CDate(表达式)日期型
•CDbl(表达式)双精度
•CSng(表达式)单精度
•CInt(表达式)整型
•CLng(表达式)长整型
•CStr(表达式)字符串
•Cvar(表达式)变体型
•二.变量
•1.变量名 V中变量的命名遵从标识符命名原则:
必须以字母开头;
变量中间不能有空格;
不能使用VB关键字;
•2.变量的声明 VB允许使用不声明的变量,即一个变量未经声明就可以在程序中使用。
这种变量使用方式称为隐含变量声明。
(使用隐含变量时,VB会自动创建变量,并赋予它变体类型。
在为其指定值之前,其值为Empty,当为它赋值后,会采用所赋值的类型作为自己的类型。
)
•显式声明:
•①用类型说明符:
将类型说明符加在变量名的尾部;
•②定义变量时指定其类型:
•格式:
Declare变量名As类型名
•其中的Declare可以是Dim,Static,Redim,Public中之一
•③用Deftype语句:
Deftype字母范围
•这里的Type是类型标志,Def是系统保留字,它们之间没有空格。
DefIntD-J
•该定义声明了D、E、F、G、H、I、J都是整型变量,而且以这些字母开头的变量名也都是整型变量。
•类型说明符:
•%:
整型;
•&
:
长整型;
•!
:
单精度浮点型;
•#:
双精度浮点型;
•@:
货币型;
•$:
字符串型;
•字节、布尔、日期、对象及变体型没有类型说明符。
•注意:
•①Dima,b,cAsInteger是错误的。
只有c被声明成Integer,而a,b缺省为Variant类型。
•②如果使用DimxAsInteger语句声明了变量x为Integer,而在后面又使用带有类型说明符的该变量,如x$,x!
,x@和x#,程序运行时就会产生“duplicatedefinition”错误。
•③使用不带As的Dim语句,会被声明成变体类型的变量。
•④通过不带长度说明的字符串声明语句可以声明变长字符串。
•⑤对于声明布尔型的变量,其缺省值为False;
•⑥为声明为Date类型的变量赋值时,日期值应放在一对#之间,且多种日期和时间格式在VB中都是有效的。
•3.变量的作用域和生存期:
•变量的作用域——指变量的有效作用范围,也就是变量可以被访问的范围。
按以下三种方式来定义变量的作用范围:
•范 围说 明
•过程 在过程内使用Dim或Static
•私有 在模块开头加上Dim或Private
•公共在模块开头加上Public
•变量的生存期——指VB保存该变量值的时间,是变量在整个程序运行过程中的有效生存时间
1)过程层变量——过程层变量是指在过程或函数内部定义的变量,这种变量无论是用Dim还是Static声明,其作用域都只是该过程或函数体,在过程或函数外不能引用;
2)窗体层变量——窗体层变量是指在窗体的通用部分声明的变量,即不是在任何一个窗体内的过程或函数中声明的变量。
它的作用范围至少是窗体的存在范围,也就是说在窗体内的每个过程或函数中都可以使用窗体层变量。
•窗体层变量的声明有三种方式:
•用Dim语句声明。
•用Private语句声明。
•用Public语句声明。
•对于用Dim和Private声明的窗体层变量,其作用范围都是在所声明的窗体范围内。
用Public声明的窗体层变量作为窗体公用数据成员,可以在其他窗体或模块中以“窗体名.变量”方式引用。
其作用可以大于当前窗体范围。
窗体层变量在本窗体所有过程中都是可见的。
•3)模块层变量——模块(Module)是构成VB工程(Project)的一部分,是包含数据和过程的集合。
定义模块层变量只需在模块的通用部分加入Dim,Private,Global或Public等声明语句即可。
用Dim和Private声明的模块层变量作用域为所在模块范围,而用Public和Global定义的模块层变量则可以全局使用。
全局变量必须用Public或Global声明,不能用Dim
•三.常量
•常量是一个有意义的名字,用来表示程序运行时不变的数值和字符串。
•VisualBasic中的常量分为文字常量和符号常量两种,文字常量又可分为数字常量和字符串常量。
•符号常量(自定义常量):
在程序中程序员用Const声明的常量。
•使用常量时应注意:
•
(1)用Const声明的常量在程序运行过程中是不能被重新赋值的。
•
(2)在常量声明的同时赋值。
•(3)可以为声明的常量指定数据类型,如ConstconValAsCurrency=3.78,缺省时为所赋值的类型。
•(4)在用常量为常量初始化时注意,不可有循环引用。
•模块1中:
•Publicconstcon1=con2+8……
•模块2中:
•PublicConstcon2=con1*3……
•四.数组
•1.数组的定义:
•必须用Global或Dim语句定义。
Dim语句的语法格式如下:
•Dim数组名([lowerTo]upper,[[lowerTo]upper])[Astype]
•在这里,每对lower和upper为数组的一维,lower是该维下标的下限,upper是该维下标的上限,如不标明lower,其默认值为0。
Upper不可省略。
•例如:
•
(1)一维数组的定义:
•DimRecord(5)AsInteger
•定义了一个有六个数据元素的整型数组
•
(2)二维数组的定义
•DimMatrix(2,3)AsInteger
•该数组定义了一个二维数组,可以存储12个整型数,三行四列下标:
00,01,02,03,10,……23
•2.动态数组
•带有空()的Dim可以声明一个动态数组,如:
•DimdynArray()
•然后,可用ReDim语句在一个过程或函数中定义动态数组的维数和元素个数。
申请或重申请存储空间的一般格式为:
•ReDim[Preserve]数组名([lowerTO]upper[,[lowerTo]upper])[AsType]
•其中,Preserve为可选项,表示是否保护己有数据。
缺省时为不保护。
ReDimdynArray(10)//为动态数组申请10个单元
•ReDimPreservemyArray(Ubound(myArray)+10)
•其中,Ubound函数返回数组的指定维的上限。
•这是一个保留原数据的增量分配数组
•五、枚举类型:
•当一个变量只有几种可能的值时,可将这个变量定义为枚举类型。
•枚举类型的声明放在窗体模块、标准模块或公用类模块中的声明部分,用Enum语句来定义,格式如下:
•[Public|Private]Enum类型名称
•成员名[=常数表达式]
•¡
¡
•EndEnum
•
•默认情况下,枚举类型中的第一个常数被初始化为0,其后的常数逐项递增1。
EnumDays
•Saturday
•Sunday
•Monday
•Tuesday
•Wednesday
•Thursday
•Friday
•例如在如上定义的Days枚举类型的基础上,有如下单击某按钮的过程:
•PrivateSubCommand1_Click()
•DimMyDayAsDays
•MyDay=Saturday
•IfMyDay<
Mondaythen
•MsgBox“It’stheweekend!
”
•EndIf
•EndSub
•MyDay是一个枚举变量,Saturday的值为0,而Monday的数值为2,If中的条件成立
•六、运算符与表达式
•1.赋值运算符:
VisualBasic中的赋值运算符是“=”。
•2.数学运算符:
•优先级运算符说 明
•高^指数运算,如2^3=8
•-负号运算符
•*/乘除运算,其中除法(/)的所得结果
•为实数
•\整除。
所得结果为实际结果
•的整数部分
•Mod取模运算符,两数相除取余数
•+-加、减运算
•低&
连接字符串。
•3.关系运算符:
=(等于);
<
>
或>
(不等);
•<
(小于);
(大于);
=(小于等于);
=(大于等于);
like(比较样式);
Is(比较对象变量)
•4. 逻辑运算符:
•逻辑运算用于判断操作数之间的逻辑关系。
VB提供了非(Not)、与(And)、或(Or)、异或(Xor)、相等(Eqv)和隐含(Imp)逻辑运算。
逻辑运算符的优先级低于数学运算符和关系运算符。
逻辑运算符本身也有优先级,其顺序为Not,And,Or,Xor,Eqv,Imp。
•5、表达式的执行顺序:
•1)函数运算;
•2)算术运算;
•3)关系运算;
(优先级:
=,<
,>
,<
=,>
=)
•4)逻辑运算;
乘除法同时出现时,遵循从左到右顺序;
括号的运算总是优先;
字符串连接(&
)不是算术运算符,但其优先顺序在所