您现在的位置:首页 >> 网络教学 >> VB语言基础 >> 内容

常用内部函数

时间:2009-6-18 21:07:02 点击:5102

    每门编程语言都有自己的内部函数,内部函数是语言系统本身把一些常用的操作事先编写成一段程序代码并封装起来,用户通过函数名调用这段程序并返回一个函数值。在VB6.0中,有两类函数:内部函数(标准函数)和自定义函数。VB的内部函数非常丰富,提供了对各种数据类型进行操作的功能,灵活地使用内部函数,会大大提高编程效率。
在程序中使用函数称为调用函数,函数调用的一般格式为:
    函数名(参数1,参数2,…)
其中,参数(也称自变量)放在圆括号内,若有多个参数,以逗号分隔。
    函数调用后,一般都有一个确定的函数值,即返回值。例如:
    Y=sqr(16)
其中,sqr是内部函数名,16为参数,运行时该语句调用内部函数sgr来求16的平方根,其计算结果由系统返回作为sqr的值,本例还把返回值赋给变量Y。
对于VB的内部函数,按其功能可分为数学函数、字符串函数、转换函数、判断函数、日期时间函数等。本节介绍几个最常用的函数,其他内部函数可以从VB6.0的联机帮助中查找。
一、数学函数
数学函数主要用于各种数学运算(详见表3-7)。
表3-7 数学函数
函数
含义
示例
结果
Abs
返回数的绝对值
Abs(-3.2)
3.2
Atn
返回弧度的反正切值
Atn(1)
.785398163397448
Cos
返回弧度的余弦值
Cos(1)
.54030230586814
Exp
返回e的指定次幂
Exp(1)
2.71828182845905
Fix
返回数的整数部分(直接取整)
Fix(-50.6)
-50
Int
返回不大于给定数的最大整数
Int(-50.6)
-51
Log
返回数的自然对数
Log(1)
0
Rnd
返回0~1之间的随机数
Rnd
0~1之间的随机数
Sgn
返回数的符号值
Sgn(-2)
-1
Sin
返回弧度的正弦值
Sin(1)
.841470984807897
Sqr
返回数的平方根值
Sqr(9)
3
Tan
返回弧度的正切值
Tan(1)
1.5574077246549
说明:
(1)     在三角函数中,以弧度表示;sqr的自变量不能是负数。
(2)     Log( ) 和Exp( )是一对互为反函数,即Log(Exp(N)),Exp(Log(N))结果还是原来各自变量的值。
(3)     Rnd函数常和Int函数配合使用实现产生一定范围内的随机整数:
Int (Rnd*范围+基数)
例:产生(a,b)区间的随机数:(b-a)* Rnd + a
产生 [a,b] 区间的随机整数,其表达式为:Int((b-a+1)* Rnd) + a
产生[20~50]之间的随机整数的函数形式为:Int (Rnd*31+20)

二、字符串编码及字符串函数
(一)字符串编码
从前面的string字符串类型的说明中知道,vb中字符串长度是以字(习惯称字符)为单位,也就是每个西文字符和每个汉字都作为一个字,占两个字节。这与传统的概念有所不同,原因是编码方式的不同。
众所周知,西文字符用ASCII编码,每个字符占一个字节。
在Windows采用的DBCS(Double Byte Character Set)编码方案中,一个汉字在计算机内存中占2个字节,一个西文字符(ASCII码)占1个字节,DBCS编码实际上是一套单字节与双字节的混合编码。
但在VB中采用的是Unicode(国际标准化组织ISO字符标准)来存储字符和操作字符串的,Unicode是全部用两个字节表示一个字符的字符集,所有一个西文或汉字字符都占2个字节。
为了不同软件系统的需要,vb中可以用StrConv函数来对Unicode 与DBCS进行转换。
例如,函数Len()函数求字符串的字符数,用 LenB()函数求字符串的字节数,下列函数调用可让读者理解Unicode 与DBCS的区别。
Private Sub form_click()
Dim s1 As String, s2 As String, s3 As String
s1 = "visiual basic程序设计语言基础知识"
Print "s1:len("; s1; ")="; Len(s1)
Print "s1:lenb("; s1; ")="; LenB(s1)
Print
s2 = StrConv(s1, vbFromUnicode)
Print "执行s2=strconv(s1,vbfromunicode)后"  'unicode码转换成DBCS码
Print "s2:lenb("; s2; ")="; LenB(s2)
Print
s3 = StrConv(s2, vbUnicode)
Print "执行s3=strconv(s2,vbunicode)后" 'DBCS码转换成unicode码
Print "s3:lenb("; s3; ")="; LenB(s3)
End Sub
从图3-1运行结果可知,vb系统以unicode编码处理字符串,通过strconv()函数转换成DBCS编码后,在vb系统下显示的是乱码。


图3-1 unicode与 DBCS的区别
  (二)字符串函数
字符串函数用于处理字符串信息。若函数的返回值为字符型数据,则常在函数名后加"$"字符。VB中也可省略此符号。常用的字符串函数如表 (详见表3-8)。
表3-8 字符串函数
函数
含义
示例
结果
Instr([N1,]C1,C2[,M])
返回C2在C1中首次出现的位置(从N1开始)
Instr(4,”xxpxxpXp”,“p”)
6
*InstrRev(C1,C2[,N1] [,M])
与Instr类似,只从尾部查找
Instr(“ASDFDFDFSDSF”)
5
*Lcase(C)
将C从大写字母变为小写字母
LCASE(“Hello”)
“hello”
Left$(C,N)
将C中左边起取N个字符
Left$(“World”,2)
“Wo”
Len(C)
返回C的长度
Len(“name”)
4
Ltrim$(C)
删除C左端的空格
Ltrim$(“name”)
“name”
*Replace(C,C1,C2[,N1][,N2][,M])
在C中从1或N1开始C2替换C1共N2次
Replace(“asabababsadb”,“ab”,“*”,2)
“as***sadb”
Right$(C,N)
从C中右边起取N个字符
Right$(“World”,2)
“1d”
Rtrim$(C)
删除C右端的空格
Rtrim$(“name”)
“name”
Space$(N)
返回N个空组成的字符串
Space$(3)
“     ”
StrComp(C1,C2[,M])
返回C1,C2比较的结果,相等时为0,小于时为-1,大于时为1
StrComp(“AB”,“ab”)
-1
String$(N,C)
返回N个C中第一个字符组成的字符串
String$(2,“xyz”)
“xx”
*StrReverse(C)
将C逆序排列
StrReverse(“xyz”)
“zyx”
Trim(C)
删除C的左右空格
Trim(“  na  ”)
“na”
*Ucase(C)
从C中小写字母改为大写字母
Ucase(“xyz”)
“XYZ”
说明:
(1)     C是字符型,N是数值型(N表示个数,N1表示起始位,N2也表示个数),M等于0表示区分大小写(默认形式),M等于1表示不区分大小写。
(2)     带*号表示VB6.0的新增函数。
例如:
Lcase(“Hello world 1234 ”)             ‘返回“Hello world 1234”
Ucase(“Hello world 1234”)              ‘返回“HELLO WORLD 1234”

三、转换函数
转换函数主要用于转换。分类型转换函数和数制转换函数两类。
(一)类型转换函数
类型转换函数主要用来实现不同类型数据之间的转换。分为强制类型转换函数,ASCII码转换函数和直接类型转换函数。
1.强制类型转换函数。是将一个表达式的数据类型强制转换成要求的数据类型(详见表3-9)。
表3-9  强制类型转换函数
函数
返回类型
目标类型范围
Cbool
Boolean
任何有效字符串或数据表达式
Cbyte
Byte
0~255
Ccur
Currency
-922337203685477.5808~922337203685477.5807
Cdate
Date
任何有效的日期表达式
Cdb1
Double
负数:-1.7976931486232E308~-4.9406564581247E-324
正数:4.9406564581247E-324~1.7976931486232E308
Cint
Integer
-32768~32767,小数部分四舍五入
CLng
Long
-2147483648~2147483647
Csng
Single
负数:-3.402823E38~-1.401298E-45
正数:1.401298E-45~3.402823E38
CStr
String
依据参数返回字符型
Cvar
Variant
若为数值型,范围与Double相同;否则与字符型相同
CVErr
Error
错误值
2.ASCII码转换函数。是用于ASCII码值和字符之间转换的函数(详见表3-10)。
                        表3-10 ASCII码转换函数
函数
功能
示例
结果
Asc
返回字符串首字符的ASCII码值
Asc(“China”)
67
Chr
返回一个值对应的ASCII码字符
Chr(100)
“d”
说明:
chr()和asc()函数互为反函数,即chr(asc(C))、asc(chr(N))的结果为原来各自变量的值。例如表达式:asc(chr(100))的结果还是100。

3直接类型转换函数。是实现字符型和数值型之间类型转换的函数(详见表3-11)。
表3-11  直接转换函数
函数
功能
示例
结果
Str
将数值型转换为字符型
Str(323.1)
“323.1”
Val
返回包含于字符串之内的数字(忽略非数字开始的字符,但可识别进位制符&O和&H)
Val(“3231-56”)
Val(“&HFFFF”)
3231
-1
说明:
(1) str()函数将非负数值转换成字符类型后,会在转换后的字符串左边增加空格即数值的符号位。例如表达式:str(123)的结果为”123”而不是”123”。
(2) val将数字字符串转换为数值类型,当字符串中出现数值类型规定的字符外的字符,则停止转换,函数返回的是停止转换前的结果。例如表达式:val(“-333.45yy”)结果为-333.45.同样表达式:val(“-333.45E3”)结果为-333450,E为指数符号。

(二)数制转换函数
数制转换函数是将一个数值表达式或字符型表达式转换为八进制或十六进制数值的函数(详见表3-12)。
表3-12  数制转换函数
函数
功能
示例
结果
Hex
返回表达式的十六进制数
Hex(30)
1e
Oct
返回表达式的八进制数
Oct(30)
36

四、判断函数
判断函数主要用于判断,其结果必为逻辑型数据(详见表3-13)。
表3-13判断函数
函数
功能
示例
结果
IsDate(表达式)
判断表达式是否为日期型
IsDate(#1985-3-21#)
True
IsEmpty(变量)
判断变量是否被初始化
IsEmpty(Null)
False
IsNumeric(表达式)
判断表达式是否为数值型
IsNumeric(45.23)
True
Iif(表达式,N1,N2)
判断表达式的真假,如为真,返回N1的值,否则返回N2的值
Iif(X>=60,“合格”,“不合格”)
取决于X的值,X>=60时,返回“合格”,否则返回”不合格”


五、日期和时间函数
日期函数用于进行日期和时间的处理,VB中常见的日期和时间函数的功能及例子(详见表3-14)。
表3-14 日期和时间函数
函数名
功能
实例
结果
Date[()]
返回系统日期
Date$()
2008-4-28
Day(C|N)
返回日期代号(1~31)
Day(“08,04,28”)
28
Hour(C|N)
返回小时(0~24)
Hour(#1:12:20 PM#)
13(下午)
Minute(C|N)
返回分钟(0~59)
Minute(#1:12:20PM#)
12
Month(C|N)
返回月份(1~12)
Month(“08,04,28”)
4
Second(C|N)
返回秒(0~59)
Second(#1:12:20PM#)
20
Now
返回系统日期和时间
Now
2008/4/28 10:40:01PM
Time[()]
返回系统时间
Time
10:40:01PM
WeekDay(C|N)
返回星期数(1~7)星期日为1,星期一为2
WeekDay(“08,04,28”)
2
Year(C|N)
返回年代号( 1753~2078)
Year(365)返回相对于1899/12/30后365天的年代号
1900年
说明:
(1)   Date获得的是系统时间年份为两位数;Date$获得的系统时间年份为四位数。
(2)   日期函数中自变量“C|N”表示可以是数值表达式,也可以是字符串表达式,“N”表示相对于1899年12月31日前后的天数。
(3)   时间差函数DateDiff( ):可以计算两个指定日期间的时间间隔。
(4)   语法形式:DateDiff(要间隔日期形式,日期1,日期2)
例:计算现在距离2008年4月28日的天数。表达式为:DateDiff(“d”,Now,#2008/4/28#)

六、其他函数
(一)格式输出函数Format( )
格式输出函数Format( )可以使数值、日期和字符串按指定的格式输出。形式如下:
Format$(表达式[,格式字符串])
说明:
表达式:要格式化的数值、日期和字符串类型表达式。
格式字符串:表示指定的格式输出表达式的值。当格式字符串是字符串常量时,必须放在双引号中。
格式字符串分为三类:数值格式、日期格式、字符串格式。
1.数值格式化
数值格式化是将数值表达式的值按格式字符串指定的格式输出。数值格式符及其功能如表(详见表3-15)。
表3-15 数值化格式输出函数
符号
功能
示例
返回值
0
数字占位符,如果表达式在格式字符串中0的位置上有一位数字存在则显示该数字,否则以零显示
Format(123.45,“0000.000”)
Format(123.45,“00.0”)
0123.450
123.5
#
数字占位符,如果表达式在格式字符串中#位置有数字存在则显示该数字,否则不显示
Format(123.45,“####,###”)
Format(123.45,“##,#”)
123.45
123.5
.
加小数点
Format(123,“000.00”)
123.00
,
千分位
Format(1234.5,“#,###.##”)
1,234.5
%
加百分比符号
Format(0.123,“0.0%”)
12.3%
$
在数字前加$
Format(1234.56,“$##.#”)
$1234.6
+
在数字前加+
Format(123.56,“##.#”)
+123.6
-
在数字前加-
Format(123.56,“-##.#”)
-123.6
说明:
符号“0“和“#”的区别:
(1)   相同处:如要显示数值表达式的整数部分位数多于格式字符串的位数,则按实际数值显示;如小数部分的位数多于格式字符串的位数,则按四舍五入显示。
(2)   不同处:“0”按规定的位数显示,“#”对于整数前的0或小数后的0不显示。
2.日期和时间的格式化
日期和时间格式化是将日期类型表达式的值或数值表达式的值以日期、时间的序数值按格式字符串指定的格式输出。
常用的日期、时间格式符如表(详见表3-16)。
表3-16 日期和时间化格式输出函数
符号
功能
示例
返回值
dddddd
显示完整日期(yy/mm/dd)
Format(Date,“dddddd”)
2008年4月28日
mmmm
月份全名
Format(Date,“mmmm”)
April
yyyy
四位数显示年份
Format(Date,“yyyy”)
2008
h
显示小时
Format(Now,“h”)
10
m
显示分
Format(Now,“m”)
20
s
显示秒
Format(Now,“s”)
50
tttt
显示完整时间
Format(Now,“tttt”)
10:20:50
AM/PM
12小时时钟,中午前为AM,午后为PM
Format(Now,“ttttAM/PM”)
10:20:50AM
说明:
(1)     上表中的Date,Now取的时间为当时系统日期和时间。
(2)     时间分钟的格式说明符m和月份mm的区分由其是否跟在h后来决定,如是接在h后则为分钟,否则为月份。
3.字符串格式化
字符串格式化是将字符串按指定的格式进行大小写显示。常见的字符串格式符及功能如表(详见表3-17)。
表3-17 字符化格式输出函数
符号
功能
示例
返回值
<
强制小写,将所有字符以小写格式显示
Format(“Abab”,“<@@@@”)
“abab”
>
强制大写,将所有字符以大写格式显示
Format(“Abab”,“>@@@@”)
“ABAB”
@
字符占位符,实际字符位数小于符号位数则字符前加空格
Format(“Abab”,“@@@@@”)
“  Abab”
&
字符占位符,实际字符位数小于符号位数则字符前不加空格
Format(“Abab”,“&&&&&”)
“Abab”
 
(二)Shell()函数
在VB中,不但提供了可调用的内部函数,还可以调用各种应用程序,也就是凡是能在DOS下或WINDOWS下运行的可执行程序,也可以在VB中调用,这是通过shell()函数来实现的。
Shell()函数的格式如下:
Shell(命令字符串[,窗口类型])
其中:
命令字符串:要执行的应用程序名,包括路径,它必须是可执行文件(扩展名为一般为.com、.exe、.bat)。
窗口类型:表示执行应用程序的窗口大小,可选择0~4或6的整数数值。一般取1,表示正常窗口状态。缺省值为2,表示窗口会以一个具有焦点的图标来显示。
函数成功调用的返回值为一个任务标识ID,它是运行程序的唯一标识,用于程序调试时判断执行的应用程序正确与否。
例如,当程序在运行时执行WINDOWS的计算器,然后切换到DOS界面,则调用shell函数如下:
i=shell(“c:\windows\system32\calc.exe”,1)
j=shell(“c:\windows\system32\command.com”,1)
程序执行到前一条语句时,显示计算器界面,如图3-2所示, 程序执行到后一条语句时,显示DOS界面,如图3-3所示。双击计算器的“关闭”按钮,终止计算器的运行。接着在DOS界面输入“EXIT”后,回到原界面继续运行。


图3-2 计算机界面图


图3-3 切换到DOS界面

(三)Dir[(路径[,属性])]:返回与定义的模式或文件属性相匹配的字符串。可以使用通配符。
例如:
Dim MyFile
MyFile= Dir(“C:\windows\*.int”,\VBHidden”)   ‘返回指定路径下第一个隐含.ini文件

作者:Admin  
  • 上一篇:运算符和表达式
  • 下一篇:编码规则
  • 本类热门
    本类推荐
    本类固顶
    • 没有
  • VB程序设计学习网站(赣南师范学院) © 2008 版权所有 All Rights Reserved.
  • 地址:江西省赣州市经济技术开发区 赣南师范学院数学与计算机科学学院 邮政编码:341000
    Email:ZQ188@163.com 技术支持QQ:87319633 移ICP备10086号
  • GnsySjxy! V2.4