6. 过程
VB中过程分3类:子程序过程(Sub,不返回值)、函数过程(Function,返回一个值)和属性过程(Property,返回
窗体、模块和对象的属性值)
窗体事件触发顺序:Initialize(初始化)→ Load(加载)→ Activate(激活)→ GotFocus(窗体成为焦点)
过程定义时缺省为全局级,在其它窗体中调用另一窗体中过程时,必须以那个窗体名字作为该共有过程名的前缀,如在
Form2中调用Form1中的SL过程,则写成“call Form1.SL”
参数的传递:按地址传递参数使过程用变量的内存地址去访问实际变量的内容。结果,将变量传递给过程时,通过过程
可永远改变变量值。如果给按地址传递参数指定数据类型,就必须将这种类型的值传给参数。按地址传递参
数在 Visual Basic 中是缺省的
按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量
本身。在过程中用 ByVal 关键字指出参数是按值来传递的
如果传递的是数组,则只能按地址传递
递归函数:在过程中调用(或间接调用)自身来完成某一特定任务的过程,类似于数列计算中已知某一项和递推公式(an
和an+1间的换算关系)求其它项的值
变量的作用域:过程级变量,作用范围仅限于该过程
模块及变量,作用范围是定义它的模块,模块内的过程都可以应用它们
全局变量,整可程序中均可引用(用Public声明)
静态变量,作用范围局限于定义它的过程
7. 文件(仅要求掌握顺序访问)
文件访问类型:顺序访问,文件中数据以ASCII码方式存储
随机访问,数据以二进制方式存储,记录长度固定
二进制访问,无数据类型和长度的限制,适用于读写任意结构的文件
顺序文件的写操作:使用Output或Append打开,如“Open‘Text.Dat’For Output As #10”(10为文件号,代
替文件名;Text.Dat不写出完整的路径即全名时表示在当前目录中查找该文件)
使用Print#写入数据(用Output打开时,覆盖原数据;用Append打开时,在末尾追加数据),如“Print #10,
‘wolfsl’,‘1136214’”,也可将文本框中字符写入“Print #10,Text1.text”文件
使用Write#写入数据,区别是比Print格式紧凑,各数据间自动插入逗号隔开,正数前无符号位空格
打开文件后要使用Close将其关闭,如“Close 10”
顺序文件的读操作:使用input打开,可一行行读取(Line input),一次性读取,一个一个字符读取
详细见书本或下页MSDN的补充
补充:使用顺序文件访问(以下内容来自MSDN Library Visual Studio 6.0):
打开顺序访问文件
当以顺序型访问打开一个文件时,可执行以下操作:
? 从文件输入字符 (input)
? 向文件输出字符 (Output)
? 把字符加到文件 (Append)
要顺序型访问打开一个文件,Open 语句使用以下语法:
Open pathname For [input | Output | Append] As filenumber [Len = buffersize]
当打开顺序文件作为 input 时,该文件必须已经存在,否则,会产生一个错误。然而,当打开一个不存在的文件作为 Output 或 Append 时,Open 语句首先创建该文件,然后再打开它。
当在文件与程序之间拷贝数据时,选项 Len 参数指定缓冲区的字符数。
在打开一个文件 input、Output 或 Append 以后,在为其它类型的操作重新打开它之前必须先使用 Close 语句关闭它。
编辑为顺序访问打开的文件
如果要编辑一个文件,先把它的内容读入到程序变量,然后改变这些变量,最后再把这些变量写回到该文件。以下各节讨论如何编辑以顺序型访问打开的各记录。
从文件中读取字符串
要检索文本文件的内容,应以顺序 input 方式打开该文件。然后使用 Line input#,input( ),或者 input# 语句将文件拷贝到程序变量中。
Visual Basic 提供了一次读写顺序文件一个字符或一行的语句和功能。
例如,以下代码段逐行读取一个文件:
Dim LinesFromFile, NextLine As String
Do Until EOF(FileNum)
Line input #FileNum, NextLine
LinesFromFile = LinesFromFile + NextLine + Chr(13) + Chr(10)
Loop
尽管 Line input # 到达回车换行时它会识别行尾,但是,当它把该行读入变量时,不包括回车换行。如果要保留该回车换行,代码必须添加。
也可以使用 input # 语句,它读取文件中所写的一列的数字和/或字符串表达式。例如,要从一个邮件列表文件中读取一行,可使用以下语句:
input #FileNum, name, street, city, state, zip
可以使用 input 函数来从文件向变量拷贝任意数量的字符,所给的变量大小应足够大。例如,以下的代码使用 input 把指定数目的字符复制到变量。
LinesFromFile = input(n, FileNum)
要将整个文件复制到变量,请使用 inputB 函数将字节从文件复制到变量。因为inputB 函数返回一个 ANSI 字符串,您必须使用 StrConv 函数将 ANSI 字符串转换为一个如下的 UNICODE 字符串:
LinesFromFile = StrConv(inputB(LOF(FileNum), FileNum), vbUnicode)
把字符串写入文件
要在顺序文件中存储变量的内容,应以顺序 Output 或 Append 打开它,然后使用 Print # 语句。例如,文本编辑器可以使用以下代码行来把一个文本框的内容拷贝到文件。
Print #FileNum, TheBox.Text
Visual Basic 也支持 Write # 语句,它把一列数字和/或字符串表达式写入文件。它自动地用逗号分开每个表达式,并且在字符串表达式端放置引号。
Dim AnyString As String, AnyNumber As Integer
AnyString = "AnyCharacters"
AnyNumber = 23445
Write #FileNum AnyString, AnyNumber
这个代码段把两个表达式写入由 FileNum 指定的文件。第一个表达式包含一个字符串而第二个包含数字 23445。因而,Visual Basic 把以下的字符(包括所有标点符号)写入到文件中:
"AnyCharacters",23445
注意 如果正在用顺序型访问的 Write # 与 input # 语句,可考虑换用随机型 或二进制型访问,因为它们更适合面向于记录的数据。
8. 编程技巧
注释:单引号“‘”是注释的引导符,整行注释也可使用“Rem“
空格:分号“;“为紧连其后;逗号“,”为4个table位(1个table位=4个空格);Tab(n)为n个table位
焦点:SetFocus,可用于文本框,按钮等可进行选择的控件
定长字符串:Dim a as string﹡n ——定义一个储存空间占n字节的字符串a
随机数赋值:Int((上限-下限+1)*Rnd+下限)
回车换行:窗体和图片框:单独Print,如Picture1.Print
文本框:加 & vbCrLf或 chr(13)& chr(10)
将文本框中字符全部选中:Text1.SelStart=0:Text1.SelLengh=Len(Text1)
9. 编程经典算法
求最大公约数,最小公倍数
冒泡排序
二分查找法
求素数
求阶乘
…………