月亮代表我的心

个人博客,跟月亮无关,跟代表无关,无关谁的心

VB学习笔记之五:过程与函数

子过程(Sub)的定义

事件过程

窗体事件过程

Private  Sub Form_事件名([参数列表])

[局部变量和常数声明]

语句块

End Sub

说明:

(1)窗体事件过程名由Form_事件名组成,多文档窗体用MDIForm_事件名。

(2)每个窗体事件过程名前都有一个Private的前缀,表示该事件过程不能在它自己的窗体模块之外被调用。

(3)事件过程有无参数,完全由VB提供的具体事件本身决定,用户不可以随意添加。

控件事件过程

Private  Sub 控件名_事件名([参数列表])

[局部变量和常数声明]

语句块

End Sub

说明:其中的控件名必须与窗体中某控件相匹配,否则VB将认为它是一个通用过程。

通用过程

[ Private | Public ] [ Static] Sub 过程名([参数列表])

[局部变量和常数声明]  ‘用Dim 或Static声明

语句块

[Exit Sub]

语句块

End Sub

说明:

(1)缺省[ Private | Public ]时,系统默认为 Public。

(2)Static 表示过程中的局部变量为“静态”变量。

(3)过程名的命名规则与变量命名规则相同,在同一个模块中,同一符号名不得既用作Sub过程名,又用作Function过程名。

(4)参数列表中的参数称为形式参数,它可以是变量名或数组名,只能是简单变量,不能是常量、数组元素、表达式;若有多个参数时,各参数之间用逗号分隔,形参没有具体的值。VB的过程可以没有参数,但一对圆括号不可以省略。不含参数的过程称为无参过程。

形参格式为:[ ByVal ] 变量名[()] [As 数据类型]

说明:

(1)变量名[()]:变量名为合法的VB变量名或数组名,无括号表示变量,有括号表示数组。

(2)ByVal :表明其后的形参是按值传递参数(传值参数 Passed By Value),若缺省或用ByRef,则表明参数是按地址传递的(传址参数)或称“引用”(Passed By Reference)。

(3)As  数据类型:缺省表明该形参是变体型变量,若形参变量的类型声明为String,则只能是不定长的。而在调用该过程时,对应的实在参数可以是定长的字符串或字符串数组,若形参是数组则无限制。
子过程(Sub)的调用

(1)用Call语句调用Sub过程:Call 过程名(实在参数表)。

(2)把过程名作为一个语句来用:过程名 [实参1[,实参2……]]。
函数(Function)过程的定义

[ Private | Public ] [ Static] Function 函数名([参数列表])[As 数据类型]

[局部变量和常数声明]  ‘用Dim 或Static声明

[ 语句块 ]

[ 函数名=表达式 ]

[ Exit Function]

语句块

[ 函数名=表达式 ]

End Function

说明:

(1)函数名的命名规则与变量命名规则相同;函数过程必须由函数名返回一个值。

(2)如果函数体内没有给函数名赋值,则返回对应类型的缺省值,数值型返回0,字符型返回空字符串。

(3)函数过程内部不得再定义Sub过程或Function过程。

函数(Function)过程的调用

(1)调用窗体中的过程:从窗体模块的外部调用窗体中的公有过程,必须用窗体的名字作为调用前缀。如:Call  Form1.Examsub([实参表])

(2)调用标准模块中的过程:如果在应用程序中,过程名是唯一的,则调用时不必加模块名。如果有同名的,则在同一模块内调用时可以不加模块名,而在其他模块中调用时必须加模块名。

(3)类模块中的过程:调用类模块的公有过程时,要求用指向该类某一实例的变量修饰过程,即首先要声明类的实例为对象变量,并以此变量作为过程名前缀修饰词,不可直接用类名作为前缀修饰词。如:在类模块Class1中含有过程clssub,变量Democlass是类Class1的一个实例,则调用clssub的方法是:

Dim Democlass AS New Class1

Call Democlass.clasub

参数的传递

(1)按值传递参数(定义时加ByVal):按值传递参数(Passed By Value)时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的值不变。

(2)按地址传递参数(定义时没有修饰词或带关键字ByRef):按地址传递参数时,把实参变量的地址传送给被调用过程,形参和实参共用内存的同一地址。在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。如果实参是一个常数或表达式,VB会按“传值”方式来处理。

(3)数组参数:VB允许把数组作为形参出现在形参表中: 形参数组名() [As 数据类型]

形参数组只能按地址传递参数,对应的实参也必须是数组,且数据类型相同。调用过程时,把要传递的数组名放在实参表中,数组名后面不跟圆括号。在过程中不可以用Dim语句对形参数组进行声明,否则会产生“重复声明”的错误。但在使用动态数组时,可以用ReDim语句改变形参数组的维界,重新定义数组的大小。

(4)对象参数:VB中可以向过程传递对象,在形参表中,把形参变量的类型声明为“Control”,可以向过程传递控件;若声明为“Form”,则可向过程传递窗体。对象的传递只能按地址传递。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注