VB中的TIMER

VB中的TIMER
VB中的TIMER

VB中的timer

VB高精度计时器编程的讨论

VB记时器编程的讨论在很多场合下编程(例如工业控制、游戏)中需要比较精确的记时器,本文讨论的是在VB下实现记时器的若干方法以及它们的精度控制问题。在VB中最常用的是Timer控件,它的设置和使用都非常方便,理论上它的记时精度可以达到1ms(毫秒)。但是众所周知的,实际上Timer在记时间隔小于50ms之下是精度是十分差的。它只适用于对于精度要求不太高的场合。这里作者要介绍的是两中利用Windows API函数实现精确记时的方法。第一中方法是利用高性能频率记数(作者本人的称呼)法。利用这种方法要使用两个API函数QueryPerformanceFrequency和QueryPerformanceCounter。QueryPerformanceFrequency 函数获得高性能频率记数器的震荡频率,该函数的定义如下:

Private Declare Function QueryPerformanceFrequency Lib "kernel32" _

(lpFrequency As LARGE_INTEGER) As Long

函数中的数据结构LARGE_INTEGER定义如下:

Type LARGE_INTEGER

lowpart As Long

highpart As Long

End Type

调用该函数后,函数会将系统频率记数器的震荡频率保存到lpPerformanceCount中,其中低位保存到lowpart中,高位保存到highpart中。但是现在的Windows没有使用到hightpart (系统频率记数器的震荡频率与计算机的主频无关,我在几台机上做过验证,都是lowpart 为1193180,highpart为0)。

QueryPerformanceCounter函数获得系统频率记数器的震荡次数,函数的定义如下

Private Declare Function QueryPerformanceCounter Lib "kernel32" _

(lpPerformanceCount As LARGE_INTEGER) As Long

获得记时器震荡次数保存在lpPerformanceCount中。

显然,如果首先获得利用QueryPerformanceFrequency函数获得频率记数器的震荡频率,然后在执行某个程序段之前调用QueryPerformanceCounter函数获得频率记数器的震荡次数,在程序段结束再调用QueryPerformanceCounter函数获得频率记数器的震荡次数,将两次获得的震荡次数相减后再除以震荡频率就获得的了两次间隔之间的时间(以秒为单位)。如果在程序中建立一个循环,在循环中不停的调用QueryPerformanceCounter获得频率记数器的震荡次数并同先前的频率记数器的震荡次数相减,将结果除以频率记数器的震荡频率,如果达到一定的时间就执行某个任务,这样就实现了一个比较精确的记时器的功能。

另外的一种精确记时器的功能是利用多媒体记时器函数(这也是作者的定义,因为这个系列的函数是在Winmm.dll中定义并且是为媒体播放服务的)。

实现多媒体记时器首先要定义timeSetEvent函数,该函数的定义如下:

Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal _

uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, _ ByVal uFlags As Long) As Long

函数定义中参数uDelay定义延迟时间,以毫秒为单位,该参数相当于Timer控件的Interval 属性。参数uResolution定义记时精度,如果要求尽可能高的精度,要将该参数设置为0;参数lpFunction定义了timeSetEvent函数的回调函数的地址。参数dwUser定义用户自定义的回调值,该值将传递给回调函数。参数uFlags定义定时类型,如果定义为Time_OneShot,则只会在当达到uDelay定义的时间后调用回调函数一次,如果定义为TIME_PERIODIC,则在每次达到定时时间后调用回调函数。

如果函数调用成功,在系统中建立了一个多媒体记时器对象,每当经过一个uDelay时间后lpFunction指定的函数都会被调用。同时函数返回一个对象标识,如果不再需要记时器则必须要使用timeKillEvent函数删除记时器对象。

由于Windows是一个多任务的操作系统,因此基于API调用的记时器的精度都会受到其它很多因素的干扰。到底这两中记时器的精度如何,我们来使用以下的程序进行验证:

设置三种记时器(Timer控件、高性能频率记数、多媒体记时器)。将它们的定时间隔设置为10毫秒,让它们不停工作直到达到一个比较长的时间(比如60秒),这样记时器的误差会被累计下来,然后同实际经过的时间相比较,就可以得到它们的精度。

下面是具体的检测程序。

首先建立一个工程文件,在Form1中加入一个Timer控件,两个CommandButton控件和三个TextBox控件,然后在Form1的代码窗口中加入以下代码

Option Explicit

Private Sub Command1_Click()

Dim lagTick1 As LARGE_INTEGER

Dim lagTick2 As LARGE_INTEGER

Dim lTen As Long

Command2.Enabled = True

Command1.Enabled = False

iCountStart = 60

lmmCount = 60

TimerCount = 60

actTime1 = GetTickCount

lTimeID = timeSetEvent(10, 0, AddressOf TimeProc, 1, 1)

Timer1.Enabled = True

lTen = 10 * lMSFreq

Call QueryPerformanceCounter(lagTick1)

lagTick2 = lagTick1

While iCountStart > 0

Call QueryPerformanceCounter(lagTick2)

'如果时钟震动次数超过10毫秒的次数则刷新Text1的显示

If lagTick2.lowpart - lagTick1.lowpart > lTen Then

lagTick1 = lagTick2

iCountStart = iCountStart - 0.01

Text1.Text = Format$(iCountStart, "00.00")

End If

DoEvents

Wend

End Sub

Private Sub Command2_Click()

EndCount

End Sub

Private Sub Form_Load()

Dim lim As LARGE_INTEGER

Text1.Text = "60.00"

Text2.Text = "60.00"

Text3.Text = "60.00"

Command1.Caption = "开始倒记时"

Command2.Caption = "停止记时"

Command2.Enabled = False

'获得系统板上时钟频率

QueryPerformanceFrequency lim

'将频率除以1000就的出时钟1毫秒震动的次数

lMSFreq = (lim.highpart * 2 ^ 16) \ 1000 + lim.lowpart \ 1000 Timer1.Interval = 10

Timer1.Enabled = False

End Sub

Private Sub Timer1_Timer()

TimerCount = TimerCount - 0.01

Text3.Text = Format$(TimerCount, "00.00")

If TimerCount <= 0 Then

Timer1.Enabled = False

End If

End Sub

在Project中加入一个Module,然后在其中加入以下代码:

Option Explicit

Type LARGE_INTEGER

lowpart As Long

highpart As Long

End Type

Public Declare Function QueryPerformanceCounter Lib "kernel32" _

(lpPerformanceCount As LARGE_INTEGER) As Long

Public Declare Function QueryPerformanceFrequency Lib "kernel32" _

(lpFrequency As LARGE_INTEGER) As Long

Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal _

uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, _ ByVal uFlags As Long) As Long

Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long Public Declare Function GetTickCount Lib "kernel32" () As Long

Public lMSFreq As Long

Public TimerCount As Single

Public lmmCount As Single

Public lTimeID As Long

Public actTime1 As Long

Public actTime2 As Long

Public iCountStart As Single

Dim iCount As Single

'timeSetEvent的回调函数

Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _

ByVal dw1 As Long, ByVal dw2 As Long)

Form1.Text2.Text = Format$(lmmCount, "00.00")

lmmCount = lmmCount - 0.01

If lmmCount <= 0 Then

iCountStart = 60

lmmCount = 60

TimerCount = 60

EndCount

End If

End Sub

Sub EndCount()

iCount = iCountStart

iCountStart = 0

timeKillEvent lTimeID

actTime2 = GetTickCount - actTime1

With Form1

.Command1.Enabled = True

.Command2.Enabled = False

.Timer1.Enabled = False

.Text1 = "计数器记时" + Format$((60 - iCount), "00.00") + " " _

+ "实际经过时间" + Format$((actTime2 / 1000), "00.00")

.Text2 = "计数器记时" + Format$((60 - lmmCount), "00.00") + " " _

+ "实际经过时间" + Format$((actTime2 / 1000), "00.00")

.Text3 = "计数器记时" + Format$((60 - TimerCount), "00.00") + " " _

+ "实际经过时间" + Format$((actTime2 / 1000), "00.00")

End With

End Sub

运行程序,点击“开始倒记时”按钮开始倒记时,可以看到两种API记时器工作基本正常,文本框中的倒记时显示流畅,而Timer控件的时间显示相比之下却不堪重负,十分缓慢。按“停止记时”按钮就可以停止倒记时,由图1可以看到,两种API记时器的累计误差在2‰以下,考虑到系统原因和处理记时显示的时间,这个误差基本是可以接受的,而且经过作者的多次检测,误差都在3‰以下。而Timer控件的误差简直是无法接受的。

图三种不同的记时器记时结果

在运行程序时作者还发现一个问题,如果在倒记时时拖动窗口,文本框中的显示都会停止,而当停止窗口拖放后,多媒体记时器显示会跳过这段时间记时,而其它两种记时器显示倒记时却还是从原来的时间倒数。这说明多媒体记时器是在独立的线程中运行的,不会受到程序的影响。

综合上面的介绍和范例,我们可以看到,如果要建立高精度的记时器,使用多媒体记时器是比较好的选择。而高性能频率记数法比较适合计

VB常用字符串操作函数解读

VB常用字符串操作函数2009/11/25 18:321. ASC(X,Chr(X:转换字符字符码[格式]: P=Asc(X 返回字符串X的第一个字符的字符码 P=Chr(X 返回字符码等于X的字符 [范例]:(1P=Chr(65 ‘ 输出字符A,因为A的ASCII码等于65 (2P=Asc(“A” ‘ 输出65 2. Len(X:计算字符串X的长度 [格式]: P=Len(X [说明]:空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2 Bytes,但也算 一个字符。 [范例]: (1 令X=”” (空字符串 Len(X 输出结果为0 (2 令X=”abcd” Len(X 输出结果为4 (3 令X=”VB教程” Len(X 输出结果为4 3. Mid(X函数:读取字符串X中间的字符 [格式]: P=Mid(X,n 由X的第n个字符读起,读取后面的所有字符。 P=Mid(X,n,m 由X的第n个字符读起,读取后面的m个字符。 [范例]: (1 X=”abcdefg” P=Mid(X,5 结果为:P=”efg” (2 X=”abcdefg” P=Mid(X,2,4 结果为 P=”bcde” 4. R eplace: 将字符串中的某些特定字符串替换为其他字符串 [格式]: P=Replace(X,S,R [说明]:将字符串X中的字符串S替换为字符串R,然后返回。[范例]:X=”VB is very good” P=Replace(X,good,nice 输出结果为:P=”VB is very nice” 5. StrReverse:反转字符串 [格式]: P=StrReverse(X [说明]:返回X参数反转后的字符串 [范例]:(1)X=”abc” P=StrReverse(X 输出结果:P=”cba” 6. Ucase(X,Lcase(X:转换英文字母的大小写 [格式]:P=Lcase(X ‘ 将X字符串中的大写字母转换成小写P=Ucase(X ‘ 将X字符串中的小写字母转换成大写 [说明]:除了英文字母外,其他字符或中文字都不会受到影响。 [范例]:(1)令X=”VB and VC” 则Lcase(X的结果为”vb and vc”,Ucase(X的结果为”VB AND VC” 7. InStr函数:寻找字符串 [格式]: P=InStr(X,Y 从X第一个字符起找出Y出现的位置 P=InStr(n,X,Y 从X第n个字符起找出Y出现的位置 [说明]:(1)若在X中找到Y,则返回值是Y第一个字符出现在X中的位置。(2) InStr(X,Y相当于 InStr(1,X,Y。(3)若字符串长度,或X为空字符串,或在X中找不到Y,则都 返回0。(4)若Y为空字符串,则返回0。 ---------------------------------------------------------------------------------------------- mid(字符串,从第几个开始,长度 ByRef 在[字符串]中[从第几个开始]取出[长度个字符串] 例如 mid("小欣无敌",1,3 则返回 "小欣无" instr(从第几个开始,字符串1,字符串2 ByVal 从规定的位置开始查找,返回字符

vb6常用函数

字符函数 函数名 功能 示例 ASC 返回一个Integer,代表字符串中首字母的字符代码。 Asc(string) CHR 返回String,其中包含有与指定的字符代码相关的字符 Chr(charcode) Format 返回Variant (String),其中含有一个表达式,它是根据格式表达式中的指令来格式化的。 Format(expression[, format[, firstdayofweek[, firstweekofyear]]]) Hex 返回代表十六进制数值的String。 Hex(number) InStr 返回Variant (Long),指定一字符串在另一字符串中最先出现的位置。 InStr([start, ]string1, string2[, compare]) InstrRev 返回一个字符串在另一个字符串中出现的位置,从字符串的末尾算起。 InstrRev(string1, string2[, start[, compare]]) Join 返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。 Join(list[, delimiter]) LCase 返回转成小写的String。 LCase(string) Left 返回Variant (String),其中包含字符串中从左边算起指定数量的字符。 Left(string, length) Len 返回Long,其中包含字符串内字符的数目,或是存储一变量所需的字节数。

Len(string | varname) Ltrim Rtrim Trim 返回Variant (String),其中包含指定字符串的拷贝,没有前导空白(LTrim)、尾随空白(RTrim) 或前导和尾随空白(Trim)。 LTrim(string)RTrim(string)Trim(string) Mid 返回Variant (String),其中包含字符串中指定数量的字符。 Mid(string, start[, length]) Partition 返回一个Variant (String),指定一个范围,在一系列计算的范围中指定的数字出现在这个范围内。 Partition(number, start, stop, interval) Replace 返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,且替换发生的次数也是指定的。 Replace(expression, find, replacewith[, start[, count[, compare]]]) Right 返回Variant (String),其中包含从字符串右边取出的指定数量的字符。 Right(string, length) Space 返回特定数目空格的V ariant (String)。 Space(number) Split 返回一个下标从零开始的一维数组,它包含指定数目的子字符串。 Split(expression[, delimiter[, count[, compare]]]) StrComp 返回Variant (Integer),为字符串比较的结果。 StrComp(string1, string2[, compare]) String 返回Variant (String),其中包含指定长度重复字符的字符串。 String(number, character) StrReverse 返回一个字符串,其中一个指定子字符串的字符顺序是反向的。 StrReverse(string1)

VB常用函数表

ASP纯ASP VBscript常用函数: 1.数值型函数: abs(num): 返回绝对值 sgn(num): num>0 1; num=0 0; num<0 -1;判断数值正负 hex(num): 返回十六进制值直接表示:&Hxx 最大8位 oct(num): 返回八进制值直接表示:&Oxx 最大8位 sqr(num): 返回平方根num>0 int(num): 取整int(99.8)=99; int(-99.2)=100 fix(num): 取整fix(99.8)=99; fix(-99.2)=99 round(num,n): 四舍五入取小数位round(3.14159,3)=3.142 中点数值四舍五入为近偶取整round(3.25,1)=3.2 log(num): 取以e为底的对数num>0 exp(n): 取e的n次幂通常用num^n sin(num): 三角函数,以弧度为值计算(角度*Pai)/180=弧度con(num); tan(num); atn(num) 2.字符串函数: len(str):计算字符串长度中文字符长度也计为一! mid(str,起始字符,[读取长度]):截取字符串中间子字符串 left(str,nlen):从左边起截取nlen长度子字符串 right(str,nlen):从右边起截取nlen长度子字符串 Lcase(str):字符串转成小写 Ucase(str):字符串转成大写 trim(str):去除字符串两端空格 Ltrim(str):去除字符串左侧空格 Rtrim(str):去除字符串右侧空格 replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):替换字符串 注:默认值:起始字符1;替代次数不限;比较方法区分大小写(0)

VB6常用函数大全

VB常用函数大全 现在的编程软件像VB,C++等,大多自带功能很强的函数库,可以很省力得完成各种功能。很多时候,想不起来实现某个功能的函数或函数格式,导致编程大费周折。作为一个编程人员,我对此深有体会。因此,特地准备了几期VB常用函数的介绍,供大家学习或参考。有说的不当之处,也欢迎在本网站的论坛中提出,大家学习。 (一)类型转换类函数 1、CType(X) [格式]: P=CBool(X) 将X转换为“布尔”(Boolean)类型 P=CByte(X) 将X转换为“字节”(Byte)类型 P=CCur(X) 将X转换为“金额”(Currency)类型 P=CDate(X) 将X转换为“日期”(Date)类型 P=CDbl(X) 将X转换为“双精度”(Double)类型 P=CHr(X) 返回字符码对应的字符 P=CInt(X) 将X转换为“整型”(Integer)类型 P=CLng(X) 将X转换为“长整型”(Long)类型 P=CSng(X) 将X转换为“单精度”(Single)类型 P=CStr(X) 将X转换为“字符串”(String)类型 P=Cvar(X) 将X转换为“变体型”(Variant)类型 P=CVErr(X) 将X转换为Error值 [ 范例]:(1) CStr(13)+CStr(23) 数值转换成字符串后,用“+”号连接,结果:1323 (2) CInt("12")+12 字符串转换成整型后与12相加,结果:24 (3) P=CInt(True) 输出结果为-1,布尔值与数值的转换时要注意,布尔值只有True和False,其中True在内存中为-1,False存为0 (4) CBool(-0、001) 输出结果为True。将数值转换为布尔型时,等于0的数值将得到False,不等于0的数值得到True 2、Int(X),Fix(X):取X的整数值 [格式]: P=Int(X) 取<=X的最大整数值 P=Fix(X) 取X的整数部分,直接去掉小数 [范例]:(1) Int(-54、6) 结果为-55,取<=-54、6的最大整数 (2) Fix(54、6) 结果为54,取整数并直接去掉小数 (二)常用数学函数 [格式]: 1、Abs(N) 取绝对值 例:Abs(-3、5) 结果:3、5 2、Cos(N) 余弦函数 例:Cos(0) 结果:1 3、Exp(N) e为底的指数函数 例:Exp(3) 结果:20、068 4、Log(N) 以e为底的自然对数

VB基础教程:第三章第三节VB的公共函数

VB基础教程:第三章第三节VB的公共函数 3.3 VB的公共函数 1. 数学函数 VB中常用的数学函数 函数名 功能 示例 结果 Sqr(x) 求平方根 Sqr(9) 3 Log(x) 求自然对数,x>0 Log(10) 2.3 Exp(x)

求以e为底的幂值,即求ex Exp(3) 20.086 Abs(x) 求x的绝对值 Abs(-2.5) 2.5 Hex[$](x) 求x的十六进制数,返回的是字符型值 Hex[$](28) "1C" Oct[$](x) 求x的八进制数,返回的是字符型值 Oct[$](10) "12" Sgn(x) 求x的符号, 当x>0, 返回1 ;x=0, 返回0;x Sgn(15)

Rnd(x) 产生一个在(0,1)区间均匀分布的随机数,每次的值都不同;若x=0,则给出的是上一次本函数产生的随机数 Rnd(x) 0-1之间的数 Sin(x) 求x的正弦值,x的单位是弧度 Sin(0) Cos(x) 求x的余弦值,x的单位是弧度 Cos(1) 0.54 Tan(x) 求x的正切值,x的单位是弧度 Tan(1) 1.56

Atn(x) 求x的反正切值,x的单位是弧度,函数返回的是弧度值 Atn(1) 0.79 2. 字符函数 (1)字符串编码 在Windows采用的DBCS(Double Byte Character Set)编码方案中,一个汉字在计算机内存中占2个字节,一个西文字符(ASCII码)占1个字节,但在VB中采用的是Unicode(ISO字符标准)来存储字符的,所有字符都占2个字节。为方便使用,可以用StrConv函数来对Unicode 与DBCS进行转换,可以用函数Len()函数求字符串的字符数,用LenB()函数求字符串的字节数。 (2)常用的字符串函数 函数名 功能 示例 结果 Len(x) 求x字符串的字符长度(个数) Len("ab技术")

vb 常用函数

第五章常用内部函数 教学目的及要求: 使学生掌握函数的概念,函数的调用格式,VB中的常用内部函数。 重点与难点: 1、学会调用内部函数进行各种运算。 2、掌握调用各种函数时需要的参数、函数的参数类型和函数返回值类型,这也是本章的难点。 主要外语词汇: ANSI 、function randomize、 format 授课内容: 1、函数的分类:(1)内部函数 (2)外部函数(用户自定义函数、函数过程) 2、VB常用的内部函数有:数学函数、字符串函数、转换函数、日期与时间函数、其他函数。 3、函数的一般调用格式为:函数名([参数表]) 注:参数的类型和个数。 若参数类型或个数不匹配,则提示出错信息。 4、方法与函数的区别: (1)方法可以单独作为语句使用,函数不可以。 (2)方法没有返回值,函数有返回值。 (3)方法的格式:[对象名.]方法 [参数列表] 函数的格式:①变量名=函数名([参数列表]) ②[对象名.]属性=函数名([参数列表]) 5、一般将函数值进行输出或赋值给某个变量。 第一节常用函数 一、数学函数: 1、利用Log(N)/Log(10)得到Lg(N)的值。 2、注意函数Int(N)、Fix(N)、Cint(N)和Round(N)之间的区别。 例1:05_1.vbp 二、字符串函数: 1、常用的字符串函数: (1)Len(S):测试字符串S的字符个数,中西文字符均算1个字符。 (2)LenB(S):测试字符串S的字节数,中西文字符均占2个字节。

LenB(S)=2*Len(S) (3)Ucase(S):将字符串S中的小写字母改为大写字母。 (4)Lcase(S):将字符串S中的大写字母改为小写字母。 (5)String(N,S):重复输出N个S单个字符 例:Print String(5,“a”) Print String(5,“abcd”) 结果相同 2、在字符串函数名后面可以加“$”符号。 例:Print String(5,“*”) Print String$(5,“*”) 等价 3、字符串的编码方案: (1)ANSI方式: 美国国家标准协会制定,西文字符占用1个字节,汉字占用2个字节。(2)UniCode方式: 国际标准化组织ISO制定,西文字符和汉字统一进行编码,占用2个字节。VB6.0内部采用UniCode编码形式来存储字符串。 4、字符处理函数:针对字符数,中西文字符均算1个字符。 字符处理函数+B:针对字节数,中西文字符均占2个字节。 5、StrConv函数: 格式:StrConv( S,指定格式 ) (1)S:要转换的字符串表达式。 (2)指定格式: ① vbUnicode(64):ANSI格式 -> UniCode格式 ② vbFromUnicode(128):UniCode格式 -> ANSI格式 ③ vbUpperCase(1):将字符串S文字转换成大写 ④ vbLowerCase(2):将字符串S文字转换成小写 ⑤ vbProperCase(3):将字符串S每个字的开头字符转换成大写 总结: 1、小写 -> 大写 2、大写 -> 小写 (1)UCase(S) (1)LCase(S) (2)StrConv(S,vbUpperCase) (2)StrConv(S,vbLowerCase) 例:Private Sub Command1_Click( ) Dim x As String ,y As String x = Text1.Text y = UCase(x) ‘ y = StrConv(x,vbUpperCase) Text2.Text = y End Sub

VB常用函数

VB常用函数: 1.数值型函数: int(num): 取整int(99.8)=99; int(-99.2)=-100 fix(num):取整fix(99.8)=99; fix(-99.2)=-99 round(num,n): 四舍五入取小数位round(3.14159,3)=3.142 中点数值四舍五入为近偶取整round(3.25,1)=3.3 sqr(num) 取根号 2.字符串函数: len(str):计算字符串长度中文字符长度也计为一!mid(str,起始字符,[读取长度]):截取字符串中间子字符串 left(str,nlen):从左边起截取nlen长度子字符串 right(str,nlen):从右边起截取nlen长度子字符串 trim(str):去除字符串两端空格 replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):替换字符串 注:默认值:起始字符1;替代次数不限;比较方法区

分大小写(0) InStr([起始字符,]str,查找字符串[,比较方法]):检测是否包含子字符串可选参数需同时选返回起始位置InStrrev() split(str,分割字符串[,次数][,比较方法]):以分割字符串为分割标志将字符串转为字符数组可选参数需同时选CHR(num)通过ASCII值获取一个字符 chr(32) 空格 chr(13) 回车 Ucase(str)所有字符转成大写 Lcase(str)所有字符转成小写 3.数据类型转换函数: Cint(str):转换正数True -1;False 0;日期距离1899/12/31天数;时间上午段0;下午段1; Cstr(str):日期输出格式yyyy/mm/dd;时间输出格式Am/Pm hh:mm:ss Csng(str):转换为单精度数值 Cdbl(str):转换为双精度数值 Cdate() 4.时间函数: date:取系统当前日期

VB常用函数

VB简单易学,如果有更多函数可以调用,会让VB使用起来更加方便.作者收集和自创了一些好用的函数在这里和大家交流一下。 一:很多运算要求输入必须是数字,否则运行程序就会出错,以下是判断字节是否为数字的函数。 Function CheckData(ByVal mydata) As Boolean For I = 1 To Len(mydata) If Asc(Mid(mydata, I, 1)) < 48 Or Asc(Mid(mydata, I, 1)) > 57 Then CheckData = False Exit For End If CheckData = True Next I End Function 二:网页下载的中文有多种编码,比如UTF-8、GB2312等等,用以下函数默认读取UTF-8,但是可以通过ReadFile(路径+文件名, "GB2312")方式读取其它编码的文件。 Public Function ReadFile(ByVal FileName As String, Optional Codify As String = "UTF-8") As String Dim objStream As Object Set objStream = CreateObject("ADODB.Stream") With objStream .Type = 2 .Mode = 3 .Open .Charset = Codify '不同编码可以换 .LoadFromFile FileName ReadFile = .ReadText .Close End With End Function 三:VB经常需要运行外部命令和程序,但是这些程序是否已经运行完毕VB 不好判断,以下函数利用API和SHELL 命令函数判断运行的外部命令和程序是否运行完毕。 1.先在Form1中声明OpenProcess和CloseHandle 这两个Windows API 函数 Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 2.然后编写下面的函数: Function IsRunning(ByVal ProgramID) As Boolean ' 传入进程标识ID Dim hProgram As Long '被检测的程序进程句柄

QTP中常用的VB函数

Left 函数 返回Variant (String),其中包含字符串中从左边算起指定数量的字符。 语法 Left(string, length) Left函数的语法有下面的命名参数: 说明 欲知string 的字符数,使用Len函数。 注意LeftB函数作用于包含在字符串中的字节数据。所以length 指定的是字节数,而不是要返回的字符数。 Mid 函数 从字符串中返回指定数目的字符。 Mid(string, start[, length]) 参数 string 字符串表达式,从中返回字符。如果string包含Null,则返回Null。 Start string中被提取的字符部分的开始位置。如果start超过了string中字符的数目,Mid将返回零长度字符串("")。 Length 要返回的字符数。如果省略或length超过文本的字符数(包括start处的字符),将返回字符串中从start到字符串结束的所有字符。 说明 要判断string中字符的数目,可使用Len函数。 下面的示例利用Mid函数返回字符串中从第四个字符开始的六个字符: Dim MyVar MyVar = Mid("VB脚本is fun!", 4, 6) 'MyVar 包含"Script"。 注意 MidB函数与包含在字符串中的字节数据一起使用。其参数不是指定字符数,而是字节数。

返回字符串内字符的数目,或是存储一变量所需的字节数。 Len(string | varname) 参数 string 任意有效的字符串表达式。如果string参数包含Null,则返回Null。 Varname 任意有效的变量名。如果varname 参数包含Null,则返回Null。 说明 下面的示例利用Len函数返回字符串中的字符数目: Dim MyString MyString = Len("VBSCRIPT") 'MyString 包含8。 注意 LenB函数与包含在字符串中的字节数据一起使用。LenB不是返回字符串中的字符数,而是返回用于代表字符串的字节数。 Right 函数 从字符串右边返回指定数目的字符。 Right(string, length) 参数 string 字符串表达式,其最右边的字符被返回。如果string参数中包含Null,则返回Null。Length 数值表达式,指明要返回的字符数目。如果为0,返回零长度字符串;如果此数大于或等于string 参数中的所有字符数目,则返回整个字符串。 说明 要确定string参数中的字符数目,使用Len函数。 下面的示例利用Right函数从字符串右边返回指定数目的字符: Dim AnyString, MyStr AnyString = "Hello World" ' 定义字符串。 MyStr = Right(AnyString, 1)' 返回"d"。 MyStr = Right(AnyString, 6)' 返回" World"。 MyStr = Right(AnyString, 20)' 返回"Hello World"。 注意 RightB函数用于字符串中的字节数据,length参数指定返回的是字节数目,而不是字符数目。

VB常用字符串函数解读

VB 常用字符串函数 (1 作者:来源:发布时间:07-11-03 浏览:12899 次 PART 1 1. ASC (X, Chr(X:转换字符字符码 [格式 ]: P=Asc(X 返回字符串 X 的第一个字符的字符码 P=Chr(X 返回字符码等于 X 的字符 [范例 ]: (1P=Chr(65 … 输出字符 A, 因为 A 的 ASCII 码等于 65 (2P=Asc(“A” … 输出 65 2. Len (X:计算字符串 X 的长度 [格式 ]: P=Len(X [说明 ]: 空字符串长度为 0, 空格符也算一个字符, 一个中文字虽然占用 2 Bytes, 但也算一个字符。 [范例 ]:

(1 令X=”” (空字符串 Len(X 输出结果为 0 (2 令X=”abcd” Len(X 输出结果为 4 (3 令X=”VB 教程” Len(X 输出结果为 4 3. Mid (X函数:读取字符串 X 中间的字符 [格式 ]: P=Mid(X,n 由 X 的第 n 个字符读起,读取后面的所有字符。P=Mid(X,n,m 由 X 的第 n 个字符读起,读取后面的 m 个字符。[范例 ]: (1 X=”abcdefg” P=Mid(X,5 结果为:P=”efg” (2 X=”abcdefg” P=Mid(X,2,4 结果为P=”bcde”

4. Replace : 将字符串中的某些特定字符串替换为其他字符串 [格式 ]: P=Replace(X,S,R [说明 ]:将字符串 X 中的字符串 S 替换为字符串 R ,然后返回。 [范例 ]: X=”VB is very good” P=Replace(X,good,nice 输出结果为:P=”VB is very nice” 5. StrReverse :反转字符串 [格式 ]: P=StrReverse(X [说明 ]: 返回 X 参数反转后的字符串 [范例 ]: (1 X=”abc” P=StrReverse(X 输出结果:P=”cba” 6. Ucase (X, Lcase(X:转换英文字母的大小写 [格式 ]: P=Lcase(X

vb函数大全

如果你装了MSDN帮助或装了Office软件,就可以得到 在MSDN中“MSDN Library Visual Studio 6.0 | Visual Basic文档 | 参考 | 语言参考 | 函数” 即可看到VB所有内部函数 在Office软件中,打开“工具|宏|Visual Basic编辑器”,打开Visual Basic 编辑器帮助,“Visual Basic语言参考 | 函数” 即可看到VB所有内部函数 Vb常用内部函数 类型转换函数 数学函数 日期与时间函数 随机数函数 字符串函数 文件操作函数 窗体输入输出函数 ? 类型转换函数 1、 Int(x):求不大于自变量x的最大整数 2、 Fix(x):去掉一个浮点数的小数部分,保留其整数部分 3、 Hex$(x):把一个十进制数转换为十六进制数 4、 Oct$(x):把一个十进制数转换为八进制数 5、 Asc(x$):返回字符串x$中第一个字符的ASCII字符 6、 CHR$(x):把x的值转换为相应的ASCII字符 7、 Str$(x):把x的值转换为一个字符串 8、 Cint(x):把x的小数部分四舍五入,转换为整数 9、 Ccur(x):把x的值转换为货币类型值,小数部分最多保留4 位且自动四舍五入 10、 CDbl(x):把x值转换为双精度数 11、 CLng(x):把x的小数部分四舍五入转换为长整数型数 12、 CSng(x):把x值转换为单精度数 13、 Cvar(x):把x值转换为变体类型值 14、 VarPtr(var):取得变量var的指针 15 val(X):把X的值转换为数值类型 ? 数学函数 1、 Sin(x):返回自变量x的正弦值 2、 Cos(x): 返回自变量x的余弦值 3、 Tan(x): 返回自变量x的正切值 4、 Atn(x): 返回自变量x的反正切值 5、 Abs(x): 返回自变量x的绝对值 6、 Sgn(x): 返回自变量x的符号,即当x为负数时,返回-1;当x为0时,返回 0;当x为正数时,返回1 7、 Sqr(x):返回自变量x的平方根,x必须大于或等于0 8、 Exp(x):返回以e为底,以x为指数的值,即求e的x次方 ? 日期与时间函数

最全VB常用函数

一、类型转换函数 1、Int(x):求不大于自变量x的最大整数 2、Fix(x):走 失一个浮点数的小数部分,保存其整数部分 3、Hex$(x):把一个十进制数转换为十六进制数 4、Oct$(x):把一个十进制数转换为八进制数 5、Asc(x$):返回字符串x$中第一个字符的ASCII字符 6、CHR$(x):把x的值转换为相应的ASCII字符 7、Str$(x):把x的值转换为一个字符串 8、Cint(x):把x的小数部分四舍五进,转换为整数 9、Ccur(x):把x的值转换为货币类型值,小数部分最多保存4 位且主动四舍五进 10、CDbl(x):把x值转换为双精度数(Double) 11、CLng(x):把x的小数部分四舍五进转换为长整数型数(Long) 12、CSng(x):把x值转换为单精度数(single) 13、Cvar(x):把x值转换为变体类型值(variant) 14、VarPtr(var):获得变量var的指针 二、数学函数 1、Sin(x):返回自变量x的正弦值 2、Cos(x): 返回自变量x的余弦值 3、Tan(x): 返回自变量x的正切值 4、Atn(x): 返回自变量x的横竖切值 5、Abs(x): 返回自变量x的尽对值

6、Sgn(x): 返回自变量x的标记,即卖x为负数时,返回-1;卖x为0时,返回 0;卖x为正数时,返回1 7、Sqr(x):返回自变量x的平方根,x务必大于或即是0 8、Exp(x):返回以e为底,以x为指数的值,即求e的x次方 三、日期函数 1、Day(Now):返回卖前的日期 2、WeekDay(Now):返回卖前的星期 3、Month(Now):返回卖前的月份 4、Year(Now):返回卖前的年份 5、Hour(Now):返回小时(0~23) 6、Minute(Now):返回分(0~59) 7、Second(Now):返回秒(0~59) 四、随机数函数 1、Rnd[(x)]:孕育发生一个0~1之间的单精度随机数 2、Randmize[(x)]:功能同上,不过更好 五、字符串函数 1、LTrim$(字符串):走 失字符串左边的空缺字符 2、Rtrim$(字符串):走 失字符串右边的空缺字符 3、Left$(字符串,n):取字符串左部的n个字符

VB函数大全

VB函数大全_基本函数大全 Abs 函数返回数的绝对值。 And 运算符执行两个表达式的逻辑连接。 Array 函数返回含一数组的变体。 Asc 函数返回字符串首字母的ANSI 字符代码。 赋值运算符(=) 给变量或属性赋值。 Atn 函数返回数的反正切值。 调用语句将控制移交Sub 或Function 过程。 CBool 函数返回已被转换为Boolean 子类型的变体的表达式。 CByte 函数返回已被转换为字节子类型的变体的表达式。 CCur 函数返回已被转换为货币子类型的变体的表达式。 CDate 函数返回已被转换为日期子类型的变体的表达式。 CDbl 函数返回已被转换为双精度子类型的变体的表达式。 Chr 函数返回指定ANSI 字符码的字符。 CInt 函数返回已被转换为整数子类型的变体的表达式。 Class 对象提供对已创建的类的事件的访问。 Class 语句声明类名 Clear 方法清除Err 对象的所有属性设置。 CLng 函数返回已被转换为Long 子类型的变体的表达式。 颜色常数颜色常数列表。 比较常数用于比较运算的常数列表。 连接运算符(&) 强制两个表达式的字符串连接。 Const 语句声明用于字母值的常数。 Cos 函数返回角度的余弦值。 CreateObject 函数创建并返回对“自动”对象的引用。 CSng 函数返回已被转换为单精度子类型的变体的表达式。 CStr 函数返回已被转换为字符串子类型的变体的表达式。 日期和时间常数在日期和时间运算中用来定义星期几和其他常数的常数列表。日期格式常数用于日期和时间格式的常数列表。 Date 函数返回当前系统日期。 DateAdd 函数返回加上了指定的时间间隔的日期。 DateDiff 函数返回两个日期之间的间隔。 DatePart 函数返回给定日期的指定部分。 DateSerial 函数返回指定年月日的日期子类型的变体。 DateValue 函数返回日期子类型的变体。 Day 函数返回日期,取值范围为1 至31。 Description 属性返回或者设置说明某个错误的字符串。 Dictionary 对象存储数据键、项目对的对象。 Dim 语句声明变量并分配存储空间。 除法运算符(/) 两数相除并以浮点数格式返回商。 Do...Loop 语句当条件为True 或者当条件变为True 时,重复一语句块。Empty 表示尚未初始化的变量值。 Eqv 运算符使两个表达式相等。 Erase 语句重新初始化固定数组的元素并重新分配动态数组的存储空间。 Err 对象含有关于运行时错误的信息。 Eval 函数计算并返回表达式的值。

VB编程常用代码大全

VB编程常用代码大全 1.数值型函数: abs(num): 返回绝对值 sgn(num): num>0 1; num=0 0; num<0 -1;判断数值正负 hex(num): 返回十六进制值直接表示:&Hxx 最大8位 oct(num): 返回八进制值直接表示:&Oxx 最大8位 sqr(num): 返回平方根 num>0 int(num): 取整 int(99.8)=99; int(-99.2)=100 fix(num): 取整 fix(99.8)=99; fix(-99.2)=99 round(num,n): 四舍五入取小数位 round(3.14159,3)=3.142 中点数值四舍五入为近偶取整 round(3.25,1)=3.2 log(num): 取以e为底的对数 num>0 exp(n): 取e的n次幂通常用 num^n sin(num): 三角函数,以弧度为值计算 (角度*Pai)/180=弧度 con(num); tan(num); atn(num) 2.字符串函数: len(str):计算字符串长度中文字符长度也计为一! mid(str,起始字符,[读取长度]):截取字符串中间子字符串 left(str,nlen):从左边起截取nlen长度子字符串 right(str,nlen):从右边起截取nlen长度子字符串 Lcase(str):字符串转成小写 Ucase(str):字符串转成大写 trim(str):去除字符串两端空格 Ltrim(str):去除字符串左侧空格 Rtrim(str):去除字符串右侧空格 replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):替换字符串 注:默认值:起始字符 1;替代次数不限;比较方法区分大小写(0) InStr([起始字符,]str,查找字符串[,比较方法]):检测是否包含子字符串可选参数需同时选返回起始位置 InStrRev(str,查找字符串[,起始字符][,比较方法]):反向检测是否包含子字符串返回起始位置 space(n):构造n个空格的字符串 string(n,str):构造由n个str第一个字符组成的字符串 StrReverse(str):反转字符串 split(str,分割字符串[,次数][,比较方法]):以分割字符串为分割标志将字符串转为字符数组可选参数需同时选

VB常用的内部函数

(一)VB常用的内部函数: Abs (x):求x的绝对值例:Abs(-3.2)= 3.2 Sqr (x):求x的平方根例:Sqr(9)= 3 Int (x):求不大于给定数x的最大整数例:Int (-1.6) = -2 Mod : 整除取余数例:9 Mod 5 = 4 (二)阅读下列程序段,写出运行结果。 1、 x = 3 y = Abs (-4.8) *2 z = x+y Print y , z 运行结果:() 2、 A= Sqr (4) * 3 B= Int (1.9) +3 Print A+B 运行结果:() 3、A= 9.8 B= 8 Mod 4 C = Int (9.8) S= A*B + C Print “S=”; S 运行结果:()

4、下列程序的功能是求长方体的体积,请将程序补充完整,并上机验证。 Private sub command1_click() Dim A As Single Dim B As Single Dim H As Single Dim V As Single A= Val(InputBox(“A=”,”输入长”)) B= Val(InputBox(“B=”,”输入宽”)) H= Val(InputBox(“H=”,”输入高”)) V =_________________________________ PRINT “长方体的体积V=”; V End Sub 顺序题 小李同学参加了一场模拟考试,其一道题目是已知长方体的长为10,宽为3,高为5,求长方体的体积V,小李同学编写出了如下的不完整程序: 一、 ′算法描述: ′注意事项: ′1、请在func()函数中实现算法,返回算法结果 ′2、请不要修改main()过程

VB常用函数用法详解

VB函数 数学函数 (1)A bs 函数语法:Abs(number)绝对值 返回一数值的绝对值。 参数 number 可以是任何数值表达式。如果 number 的值为 Null,则返回 Null;如果其参数是没有初始值的变数,则返回0。 注解:一个数值的绝对值就是将正负号去掉以后的值。例如 Abs(-1) 和 Abs(1) 的返回值都是1。 (2)A tn 函数 语法:Atn(number) 反正切 该函数返回参数的「反正切」(arctangent) 值。 参数 number 可以是任何有效的数值表达式。 注解:Atn 函数的参数 (number) 是直角三角形中构成直角两边的比值(正切函数值),其返回值则为相对应之底角的度数, 以「弧度」为单位。正切函数值 (number) 的算法为「对边除以邻边」。返回值的范围落在 pi/2 到 pi/2 的「弧度」之间。 「角度」与「弧度」的转换方法为:将「角度」乘以 pi/180 即为「弧度」。反过来将「弧度」乘以180/pi 便得「角度」。

语法:Cos(number) 该函数返回一角度的 cosine (余弦函数)值。参数 number 可以是任何有效的数值表达式,其值代表一个角度,以「弧度」为单位。 注解:Cos 函数的参数表示角度,返回值为该角度两邻边的比值。其比值的定义为「连接另一锐角的邻边除以连接直 角的邻边」。 返回值的范围在 -1 到 1 之间。 (4)E xp 函数 语法:Exp(number) 自然对数之底数 该函数返回 e(自然对数之底数)的某次方。 参数 number 可以是任何的数值表达式。 注解:如果 number 的值超过 709.782712893,会产生程式错误。常数 e 的值大约是 2.718282。 (5)L og 函数自然对数值 语法:返回参数的自然对数值。 Log(number) 参数 number可以是任何的数值表达式,条件是参数值必须大于 0。注解:自然对数是以 e 为底数的对数。常数 e 的值大约是 2.718282。VB函数

VB常用字符串函数

VB常用字符串函数(转) VB常用字符串函数2007-03-23 15:571. ASC(X),Chr(X):转换字符字符码 [格式]: P=Asc(X) 返回字符串X的第一个字符的字符码 P=Chr(X) 返回字符码等于X的字符 [范例]: (1)P=Chr(65) … 输出字符A,因为A的ASCII码等于65 (2)P=Asc(“A”) … 输出65 2. Len(X):计算字符串X的长度 [格式]: P=Len(X) [说明]: 空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2 Bytes,但也算一个字符。[范例]: (1) 令X=”” (空字符串) Len(X) 输出结果为0 (2) 令X=”abcd” Len(X) 输出结果为4 (3) 令X=”VB教程” Len(X) 输出结果为4

3. Mid(X)函数:读取字符串X中间的字符 [格式]: P=Mid(X,n) 由X的第n个字符读起,读取后面的所有字符。 P=Mid(X,n,m) 由X的第n个字符读起,读取后面的m个字符。 [范例]: (1) X=”abcdefg” P=Mid(X,5) 结果为:P=”efg” (2) X=”abcdefg” P=Mid(X,2,4) 结果为P=”bcde” 4. Replace: 将字符串中的某些特定字符串替换为其他字符串[格式]: P=Replace(X,S,R) [说明]:将字符串X中的字符串S替换为字符串R,然后返回。[范例]: X=”VB is very good” P=Replace(X,good,nice) 输出结果为:P=”VB is very nice” 5. StrReverse:反转字符串

VB常用函数介绍

VB常用函数介绍 一、常用内部函数 在VB内部提供了大量函数。在这些函数中,有些是通用的。有些则与某种操作有关的。大体分成五类,分别是:转换函数、数学函数、日期函数、时间函数和随机函数。 (1)转换函数 函数名功能 Int(x) 返回不大于自变量的最大整数。 Fix(x) 去掉一个浮点数的小数部分,保留其整数部分。Hex(x) 把一个十进制数转换成为十六进制数。 Oct(x) 把一个十进制数转换成为八进制数。 Asc(x) 返回字符串中第一个字符的ASCII码。 Chr(x) 把值转换为相应的ASCII字符。 Str(x) 把值转换为一个字符串 Cint(x) 把小数部分四舍五入,转换为整数。 Ccur(x) 把值转换为货币类型,小数部分最多保留4位。CDbl(x) 把值转换为双精度数值。

CLng(x) 把值小数部分四舍五入转换为长整型数值。CSng(x) 把值转换为单精度数值。 CVar(x) 把值转换为变体类型值。 (2)数学函数 函数名功能 Sin(x) 返回正弦值。 Cos(x) 返回余弦值。 Tan(x) 返回正切值。 Atn(x) 返回反正切值。 Abs(x) 返回绝对值。 Sgn(x) 返回自变量的符号。即: 值为负数时,函数返回-1 值为0时,函数返回0 值为正数时,函数返回1 Sqr(x) 返回自变量x的平方根,自变量必须大于或等于0。 Exp(x) 返回以e为底数,以x为指数的值,即求e的x 次方。

(3)日期函数 函数名功能 Day(Now) 返回当前的日期。 WeekDay(Now) 返回当前的星期。 Month(Now) 返回当前的月份。 Year(Now) 返回当前的年份。 (4)时间函数 函数名功能 Hour(Now) 返回小时(0~23)。 Minute(Now) 返回分钟(0~59)。 Second(Now) 返回秒(0~59)。 (5)随机函数 Rnd(x) 产生一个0~1之间的单精度随机数 Rnd函数可以产生随机数,当一个应用程序不断地重复使用随机数时,同一序列的随机数会反复出现,用Randomize语句可以消除这种情况。 二、字符串函数 (1)删除空白字符函数

相关文档
最新文档