你还记得吗-VB中Sub子过程与函数的调用
2012-08-22 22:05
218 查看
在做学生管理系统中,遇到了太多太多的问题,发现了VB的学习是多么的不牢固,即使当初耗费了大量的时间。从现在开始,将把自己遇到的那些模糊或者不懂的知识总结出来,查漏补缺,欢迎大家提出批评指正!
VB中的调用主要针对Sub子过程和自定义函数的调用。不论是Sub子过程还是函数过程,都是将一段完整的功能独立出来,建立一个过程。在主调程序中通过调用过程,将需要计算的参数(实参)传递给过程;在过程中求得结果后再讲结果返回到主调程序,从而实现程序的功能,并使程序结构更为清晰、简洁。
一、Sub子过程的调用
在程序中要调用Sub子过程的方法有如下两种:
Call 过程名 (实参列表) 或 过程名 [实参列表]
调用Sub子程序的程序段称为主调程序。在主调程序中调用Sub子过程时,将使程序流程自动转向被调用的Sub子过程。在过程执行完最后一行语句 End Sub 之后,程序流程将自动返回到主调程序语句的下一行继续进行,如下图所示:
在调用过程的的语句中,不仅要求实参个数与被调用过程形参个数一致,而且要求实参表的参数类型、参数顺序与被调用过程形参表的参数完全一致。
二、自定义函数的调用形式如下:
函数名 (实参列表)
实参列表有变量名、数组名、数组元素名、常熟或表达式组成,在调用时,实参和形参的数据类型、顺序、个数必须一一对应。如下图所示:
函数调用只能出现在表达式中,其功能是求得到函数的返回值。
从上面两张图中可以看出,Sub子过程和函数过程在传递需要计算的参数时(实参a、b传递给形参x、y),两者并没有什么不同。但在返回结果方面,因为函数过程可以通过函数名返回结果,因此,在函数过程中一般只需要设置接收计算参数的形参即可(图2的形参为x、y);Sub子过程却有所不同,由于Sub子过程名只代表名字,没有返回值,所以必须另外设置专门的形参用于返回结果(图1的形参为z1、z2)。
那么,在解决一个问题时,是使用Sub子过程还是使用函数过程呢?从原则上来说,解决一个问题,既可以使用Sub子过程,也可以使用函数过程。如果是需要过程只有一个返回值,一般习惯使用函数过程,通过函数名来返回结果;如果不是为了求一个值,而是完成一些操作,或者需要返回多个值,则使用Sub子过程比较方便,此时,可以通过设置与返回值个数相符的形参个数来得到返回结果。
补充:多窗体间数据的访问与传递
①直接访问其他窗体的控件属性
在一个窗体中可以直接访问另一个窗体上控件的属性,访问时要指明是哪一个窗体,形式为:
另一窗体名.控制名.属性 如Text1.Text=Form1.Text1.Text
②直接访问其他窗体中声明的全局变量
在窗体的通用声明区用Public关键字声明的变量,可以被工程中其他的窗体或模块所使用.需要注意的是,在使用窗体的全局变量时,必须带有窗体名。 格式为: 窗体名.变量名
③在标准模块中声明全局变量,实现数据的共享
为了实现窗体间的数据互访,还可以在标准模块中声明全局变量,并以该全局变量作为交换数据的场所。 例如:在标准模块中声明:Public Pubx As Integer ,此时在一个窗体中对Pubx的赋值可以被另外窗体使用。
VB中的调用主要针对Sub子过程和自定义函数的调用。不论是Sub子过程还是函数过程,都是将一段完整的功能独立出来,建立一个过程。在主调程序中通过调用过程,将需要计算的参数(实参)传递给过程;在过程中求得结果后再讲结果返回到主调程序,从而实现程序的功能,并使程序结构更为清晰、简洁。
一、Sub子过程的调用
在程序中要调用Sub子过程的方法有如下两种:
Call 过程名 (实参列表) 或 过程名 [实参列表]
调用Sub子程序的程序段称为主调程序。在主调程序中调用Sub子过程时,将使程序流程自动转向被调用的Sub子过程。在过程执行完最后一行语句 End Sub 之后,程序流程将自动返回到主调程序语句的下一行继续进行,如下图所示:
在调用过程的的语句中,不仅要求实参个数与被调用过程形参个数一致,而且要求实参表的参数类型、参数顺序与被调用过程形参表的参数完全一致。
二、自定义函数的调用形式如下:
函数名 (实参列表)
实参列表有变量名、数组名、数组元素名、常熟或表达式组成,在调用时,实参和形参的数据类型、顺序、个数必须一一对应。如下图所示:
函数调用只能出现在表达式中,其功能是求得到函数的返回值。
从上面两张图中可以看出,Sub子过程和函数过程在传递需要计算的参数时(实参a、b传递给形参x、y),两者并没有什么不同。但在返回结果方面,因为函数过程可以通过函数名返回结果,因此,在函数过程中一般只需要设置接收计算参数的形参即可(图2的形参为x、y);Sub子过程却有所不同,由于Sub子过程名只代表名字,没有返回值,所以必须另外设置专门的形参用于返回结果(图1的形参为z1、z2)。
那么,在解决一个问题时,是使用Sub子过程还是使用函数过程呢?从原则上来说,解决一个问题,既可以使用Sub子过程,也可以使用函数过程。如果是需要过程只有一个返回值,一般习惯使用函数过程,通过函数名来返回结果;如果不是为了求一个值,而是完成一些操作,或者需要返回多个值,则使用Sub子过程比较方便,此时,可以通过设置与返回值个数相符的形参个数来得到返回结果。
补充:多窗体间数据的访问与传递
①直接访问其他窗体的控件属性
在一个窗体中可以直接访问另一个窗体上控件的属性,访问时要指明是哪一个窗体,形式为:
另一窗体名.控制名.属性 如Text1.Text=Form1.Text1.Text
②直接访问其他窗体中声明的全局变量
在窗体的通用声明区用Public关键字声明的变量,可以被工程中其他的窗体或模块所使用.需要注意的是,在使用窗体的全局变量时,必须带有窗体名。 格式为: 窗体名.变量名
③在标准模块中声明全局变量,实现数据的共享
为了实现窗体间的数据互访,还可以在标准模块中声明全局变量,并以该全局变量作为交换数据的场所。 例如:在标准模块中声明:Public Pubx As Integer ,此时在一个窗体中对Pubx的赋值可以被另外窗体使用。
相关文章推荐
- 'VB编程 编写一个竞赛评分的函数过程。评委打分为参数(数组参数),选手得分为函数值。记分规则为:去掉一个最高分,去掉一个最低分,然后求平均。调用该函数,由键盘输入5个评委的打分(存放在数组中),输出
- jdbc调用存储过程和函数
- INTEL汇编的函数调用过程
- VB中调用vc++ DLL文件中的函数问题
- SQL Server的存储过程或自定义函数调用Com组件
- VB调用DLL导出函数出现"Bad DLL call convention"的解决
- ARM系统中函数调用过程中的参数传递
- 进程、过程调用、函数调用、堆、栈
- 函数调用过程-函数栈
- vb中集合调用item方法,报“无效的过程调用或参数”错误的原因
- oracle 函数中调用存储过程
- JDBC操作调用Qracle中过程或函数取得数据
- 函数的调用过程(栈帧)
- TCP/IP - 函数到系统调用的过程
- wince文件系统函数的调用过程
- 存储过程或自定义函数调用存储过程的变通实现方法
- 20161210计算机科学导论06_函数调用过程
- C#中直接调用VB.NET的函数,兼论半角与全角、简繁体中文互相转化
- stdcall 函数调用过程(以delphi为例),还有负数的补码