|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(1)如果需要使用返回值,其格式为:变量名=函数名(参数列表) (2)如果不需要使用返回值,其格式为: 函数名 参数列表 所谓参数,就是在调用函数时交给函数处理的数据。所渭返回值,就是函数经过一系列运面返回给调用者的值。 一、输入输出函数 输入输出函数也可以称为交互式函数,是用来输入数据和输出信息的。主要有输入函数 Input和输出函数Msgbox,下面将详细介绍这两个函数。 Inputbox函数用于接收用户从键盘输入的数据的函数。此函数的—个优点在于:该函数使的是对话框界面,可以提供一个良好的交互环境。其使用格式为: InputBox(提示信息,[标题],[缺省值]) 其中,“提示信息”是指该函数弹出的对话框中向用户显示的信息,一般是用以提示用户输入什么内容;“标题”则是这个对话框的标题,它是可以省略的,如果缺省,该对话框的题默认为“工程l”:“缺省值”则是提供给用户缺省输入的内容,它也是可以省略的。例如 我们要输入自己的名字,可以使用如下代码: N = InputBox("请输入您的姓名", "输入姓名", "张三") 这行代码是使用Inputbox函数,让用户输入姓名,然后存到变量N中去。当用户输入姓名并单击“确定”后,输入的姓名将会被存到变量N中去;因为已经提供了缺省值,所以可以不输入任何数据而直接单击“确定”,这时保存的将是“张三”;如果用户单击的是“取消”的话,变量N的值将为空。 使用该函数输入的任何数据都将被认为是字符型的,如果想要得到其它类型的数据,还需要进行类型转换。 Msgbox函数是以对话框的形式输出信息的函数,它还可以让用户在对话框内进行相应的选择,然后将选择结果返回给程序。该函数的使用格式为: Msgbox(输出信息,[按钮],[标题]) 其中,“输出信息”是要显示的内容或提示用户进行选择的信息;“按钮”是指向用户提供的选择,一般是由“是/否”、“重试/取消”、“确定/取消”等组成的按钮组合,如果缺省,则只有一个“确定”按钮;“标题”则是对话框的标题,如果缺省的话,默认值也为“工程1。”按钮参数不仅包含提供用户选择的按钮,还可以包含一个用来表示对话框功能的图标以及缺省按钮。这些按钮、图标、缺省按钮都是VB的内部常量,有关按钮的常量如下表所示。
前面提到的图标共有四种,分别用来表示警告、询问批评、消息,右关这些图标的常量表所示。
另外,有关缺省按钮的常景如下表所示。
在设置“按钮”参数时。只需在以三类中分别选出合适的数值或相应的常量,将数值直接或者将常量用加号连接即可得到“按钮”参数的值。在每一类中选择不同的值会产生不效果,一般情况下最好使常量相加的形式表示,这可以提高程序的可读性。
当用户选择对话框中的某个按钮时,MsgBox函数将返回一个值,以供程序根据用户的选择来进行相应的操作。这个返回值也是VB的内部常量。
下面我们来看这样一段程序代码: Private Sub Form Load() On Error GoTo XX Dim a As String,b AS Integer A=Dir(“a:\abc.Txt”) Exit Sub Xx:b=MsgBox("读取软盘时出错,请插入软盘后重试", vbCritical + vbAbortRetryIgnore + vbDefaultButton2, "错误提示") If b=vbAbort Then End Elseif b=vbRetry Then Resume Else Resume Next EndIf End Sub
在上面这个程序中,“On Error GoTo XX'’是错误捕获语句,它的含义是当出现错误时程序将转到行标号指定的语句处去执行,关于错误捕获将会在第五章的最后一节中详细介绍;“Dir”是一个查找文件的函数,这将在后面的内容中介绍;“Exit Sub”是跳出过程的语句;“End”是退出程序的语句;“Resume”是用于返回出错的地方继续执行程序;“Resume Next”是返回出错语句的下一个语句处继续执行。 运行这个程序时,若软驱中没有软盘,将会出现“错误提示”对话框,这时程序将根据用户选择进行下一步操作。由上面的代码可以看出,当选择“终止”按钮时,将会结束程序运行;若选择的是“重试”按钮,则再次读取软盘:否则的活,则执于读取软盘后面的语句。 二、类型转换函数 当我们要对不同类型的变量进行操作时,就需要先进行类型转换。主要的类型转换函数可下表。
三、数学函数 这里所说的数学函数是用来完成特定数学运算的函数,与实际上数学里的函数有些类似。所有的数学函数的参数和返回值部是数值型的。主要的数学函数参见下表。
下面详细说明一下各数学函数。 以上各数学函数除“Round”函数可以有两个参数,其它函数只需一个参数。 其中,“Round”函数的第一个参数是要四舍五人的小数,第二个参数是可选的,用来指定保留到小数点后面几位,若缺省此项,则不保留小数部分。例如:Round(9.1415926,3)的值为9.142,Round(7.8)的值为8,Round(-6.3)的值为-6,Round-6.8)的值为-7。 如果参数是正数,函数“Fix”和“Int”的返回值是—样的;如果参数是负数,对于相同的参数这两个函数的返回值相差1。例如:Fix(7.4)、Int(7.4)、Fix(7.8)、Int(7.8)的值都是7;而Fix(-7.4)、Int(-7.4)、Fix(-7.8)、Int(-7.8)的值分别是-7、-8、-7、-8。 对于“Sgn”函数,若参数是正数,则返回1;若参数是负数,则返回—1;若参数为0,则返回0。例如:Sgn(8)、Sgn(-8)、Sgn(0)的值分别是1、-1、0。 这里的“Log”并不是数学里的对数函数,而是自然对数函数。如果要求以x为底y的对数,则需要用换底公式以Log(y)/Log(x)的形式去求。例如求以20为底3的对数,要写成Log(3)/Log(20)的形式。 对“Sin、Cos、Tan、Atn”这四个三角函数,它们的参数是弧度制的,使用时要注意把角度化为弧度。 “Rnd”是产生随机数的函数。所谓随机数,就是随机产生的无实际意义的数。在实际编程中,我们通常需要产生一组某个范围内的随机整数,但“Rnd”函数本身只能产生0至l之间的随机数,这时我们可以通过如下方法取得。例如要产生x至y之间的随机整数,可用Int(Rnd*(b-a+1))+a的形式来产生。例如要在窗体上显示10个7至25之间的随机整数,可用如下代码: for i=1 to 10 print Int(rnd*25-7+1)+7; next i 另外还要注意,如果要使用“Rnd”函数,则必须在程序的启动部分(一般是启动窗体的 Load过程或Sub Main子程序)使用“Randomize”函数来初始化随机数发生器。否则,每次程序时产生的都是相同的随机数列 四、字符串函数 字符串函数将串函数是用来对字符串进行处理或操作的函数。主要有如下这些: (1) Len:用来返回字符串的长度(即字符串中字符的个数)。例如:Len(“format")、Len (“Internet")的值分别为6和8。 (2) Left:从某字符串的左边截取子字符串。其使用格式为: Left(原字符串,截取长度) 该函数有两个参数,第一个是被截取的原字符串,第二个是截取的字符个数。例如:Left “format”,3)是从字符串“format”左边截取3个字符,返回值是“for”。 (3)Right:与Left正好相反,它是从字符串的右边截取子字符串,使用方法与Left一样。 Right(“format”,3)的值为“mat"。 (4)Mid:是从中间截取子字符串,是Left函数和Right函数的综合。该函数的使用格式为: Mid(字符串,启始位置,截取个数) 例如:Mid(“format”,3,2),表示从该字符串的第三个字符处截取2个字符,其值为“rm” (5)StrReverse:返回与原字符串反向的字符串。例如:StrReverse(“format")的值为“tamrof”。 (6)LTrim:清除字符串左边的空格。例如:LTrim(“ format”)的值为“format” (7)RTrim:清除字符串右边的空格。例如:LTrim(“ format “)的值为“ format" (8)Trim:清除字符串两边的空格。例如:LTrim(“ format ”)的值为“format” (9)Space:返回一个由指定空格组成的字符串。注意该返回值与空字符串(“”)并不相同前者是由空格组成的字符串,而后者中不包含任何内容。例如:Space(“5”)的值为“ ” (10)String:返回一个由指定字符组成的字符串。例如:String(3,“#”)的值为“###” (11)LCase:将字符串的所有字母变成小写。例如:LCase(“ForMat")的值为“format"刁 (12)UCase:将字符串的所有字母变成大写。例如:UCase("ForMat”)的值为“FORMAT” (13)strComp:比较两个字符串的大小。若第一个字符串大于第二个字符串,函数将返回1若第一个字符串小于第二个字符串,将返回-1;若两个字符串相等,则返回0。其使用格式: StrComp(字符串1,字符串2,[比较方式]) l 其中,比较方式有文本方式和二进制方式两种。使用文本方式比较时,会忽略字母的大小写。缺省时按二进制方式进行比较。 (14) Replace:用指定的字符串来替换字符串中的子字符串。其使用格式为: Replace(字符串1,字符串2,字符串3,[起始位置],[替换个数],[比较方式]) 其中,后面三个参数是可选的,表示从第几个字符开始替换几次。如果缺省这三项的话卖默认是从字符串1第一个字符开始用字符串3替换掉所有的字符串3,其比较方式是二进制方式。现举例如下: : a=Replace(“Visual Basic”,”i”,”I”) b=Replace(“Visual Basic”,”i”,”1”,,1) c=Replace(“Visual Basic”,”i”,”I”,,5) d=Replace(“Visual Basic”,”I”,”abc”) e=Replace(“Visual Basic”,”I”,””) f=Replace(“Visua]Basic”,”I”,”abc”,,,vbTextCompare) (15)Split:根据指定的分隔符将字符串分解为多个部分,并以数组的形式返回。使用格式如下(字符串,[分隔符],[分解个数1,[比较方式]) 其中,后三个参数是可选的,若全部缺省时表示:以字格为分隔符,能分解多少次就分解多少次,且以二进制方式进行比较。 在使用Split函数之前,要先定义一个动态数组用以存放该函数的返回值。例如:已经定义一个动态数a(),则a=-split(“a*b*c*d*e*f”,”*”,3)将返回一个具有三个元素的数组,其各元素的值分别为“a”、“b”、“c”;a=split(“a b c d e f”)将返回—一个具有六个元素的数组,其各元素的值分别分别为“a”、“b”、“c”、“d”、“e”、“f”。 使用split函数所返回的数组的下界为0。 (16)Join正好与Split函数相反,它是把指定的字符型数组的各个元素之间加上指定的字符串作为分隔符连成一个字符串。例如:如果已经定义一个具有三个元素的数组a(),其的值分别为“a”、“b”、“c”。则Join(a,”*”)的值为“a*b*c”,Join(a,”@#”)的值为”a@#b@#c”,Join(a)的值为“a b c”。 (17)InStr:返回查找字符串在原字符串中最先出现的位置,这就要求查找字符串是原字符串,否则的话该函数将返回0。使用格式为: InStr([起始位置],原字符串,查找字符串,[比较方式]) 其中,第一个和最后一个参数是可选的,如果缺省的话,将第—个字符开始查找,并以二进制方式进行比较。例如:Instr(“Ho do you do”,”do”)的值为4,InStr(5,”How do you do”,”do”)的值为11。 (18)InStrRev:该函数的作用与InStr函数类似,但它的查找顺序是从后向前的。其格式InStr函数不同:InStrRev(原字符串,查找字符串,[起始位置]) 其中,最后—个参数是可选的。此处的“起始位置”是从后向前数的,缺省的话,则从最后一字符开始查找。例如:InstrRev(“How do you do”,”do”)的值为11,InStrRev(“How do you do”,”do”,5)的值为4。 五、日期和时间函数 日期和时间函数用来返回日期和时间的函数。还可以从日期和时间中提取年、月、日、时、分、秒。主要的日期和时间函数及功能如下表所示。
在上表中的“日期”参数,既可以是日期型的,也可以是字符型的。“月份”和“星期”参数都是整型的。 其中,Year函数返回的年份是四位数的,例如:Year (“92/03/17”)为值为1992。 MonthName函数是根据“月份”参数的来返回它的中文或英文名。例如MonthName(10),如果您的系统是中文的,其值为“十月”;如果您的系统是英文的,则具值为“october”。 WeekdayName函数是根据“星期”参数的来返回它的中文或英文名。例如;WcekdayName(3)约的值为“星期二”或“Tuesday'’。 DateAdd函数中的“项目”参数有“m、q、d、h”四种取值,它们分别表示,增加月份、增加季节数、增加天数、增加小时数。例如:DateAdd (“d”,5,“92/03/22”)的值为“92/03/22",DateAdd (“q”,2,“92/03/17”)的值为“92/09/17”。当然,“增加量”参数也可以是负数,如:DateAdd (“d”,—2,“92/03/17”)的值为“92/03/15,DateAdd (“m”,-2, “92/03/17"”)的值为“92/03/15”。 DateDiff函数用来计算两个日期之差。例如:DateDiff、(“m”, “82/09/20”, “92/03/17是计算这两个日期相差的月份,其值为114;DateDifI、(“d”,“82/09/20”, “92/03/17”)是计算这两个日期相差的天数,其值为3466。 FormatDateTime函数是对日期和时间进行格式化,共有方式,具相关常量见下表。
FormatDateTime函数的格式化方式:在程序中添加如下代码,即可显示对当前日期和时间的几种格式化效果。 Dim i As Integer For i=0 TO 4 Print FormatDateTime (now(),i) Next i 其运行的结果如下图所示。 六、文件夹和文件函数 在VB中提供了很多对文件夹和文件操作的函数,如创建、删除文件夹和文件等。主要的文件和文件函数如下表所示。
其中的Dir函数可以查找指定的文件,若找到则返回该文件的文件名,否则返回空字符串,其使用格式如下: Dir(文件名,[文件类型]) 其中的“文件类型”参数包括隐藏、只读、系统等,一般情况该参数是缺省的。例如:Dirl (“c:\hello.txt”),若存在该文件,函数返回该文件的文件名即“hello”,否则返回“”。 另外,还有几个关于文件夹和文件的语句:ChDrjve、ChDir、MkDir、RmDir、FileCopy以及Kill。它们的作用分别是:改变当前驱动器、改变当前路径、创建新的文件夹、删除文件夹、复制文件和删除文件。注意在删除文件夹时,被删除的文件夹——定要为空(即该目录内没有任何文件和下级目录)。对于Kill语句一定要小心使用,因为它在删除文件时不会做出任何提示,也不会将删除的文件放到回收站里,—般情况下就再也不能恢复了。 下面举例说明这几个语句: ChDrive “d:\” MkDir “d:\abc” FileCopy “c:\data\readme.txt”,”d:\abc\rd.txt” Kill “e:\data\readme.txt” 这几行语句的含义分别是:把d盘设置为当前盘;在d盘根目录下新建—个名为“abc” 的目录;复制e盘data目录下的readme.txt文件到d盘abc目录下,并将其改名为rd.txt、删除e盘data目录下的readme.txt文件。 VB的文件夹及文件函数功能都比较简单,在后面将介绍功能更为强大的文件系统对象。 七、其它函数 (1) QBColor:这是一个用来返回颜色的函数。其格式为:QBColor (颜色号)。其中,“颜色号”参数的取值在0至15之间,与其相对应的颜色如下表所示。
|