标签存档: VB编程

VB DoEvents总结 转

VB6.0
Windows98
我要实现一个类似Windows复制(移动)文件时的提示窗体,耗时很长,且要求中断后能继续未完成的操作,不知使用DoEvents从长循环中跳出后,程序将从何处开始继续执行,是否是从DoEvents所在的Sub开始?(倔小孩)

事实上仅使用DoEvents,并不意味着从长循环中跳出。DoEvents只是允许用户选择其他按钮而已,不中断循环,不管用户如何操作,都继续执行 DoEvents后面的语句,即使用户按下了中断按钮,你的循环仍然在继续,甚至你关闭了窗体,程序仍然继续在后台运行。正确的中断处理是这样的:
1、建立一个全局或窗体变量bRun。
2、在启动循环前设置bRun为True。
bRun = True
While bRun And (….)
….
DoEvents
Wend

3、在中断按钮Click事件中加入代码:
bRun = False
4、在Form_Unload事件中加入代码:
bRun = False
这样一旦用户按下了中断按钮,bRun = False,循环的条件就不满足了,所以退出循环,执行后续语句。你也可以采用下面的方式:
bRun = True
While ….
If Not bRun Then
Exit Sub
End If
….
DoEvents
Wend

继续阅读 »

VB6.0 Doevents,闲置循环和控时循环中的难点问题 转

DoEvents函数的功能是:转让控制权,以便让操作系统处理其它的事件。
问:为什么要用doevents?
A.在需要用某一循环处理相当耗时或者很快速的代码时,就需要用到它,以便用户能在起处理过程中能做其他事情,即程序能被控制,而不是无响应状态
B.vb6.0中多线程vb代码极度不稳定,而且无法调试,所以vb中的多线程用的很少(注:是指vb的代码在多线程中运行时不稳定)
C.timer控件可以起到后台运行作用,但其是通过事件控制,一是不稳定,二是速度太慢,如果想用其处理高速又耗系统的代码更本不能达到预期的效果

下面将其某些用法和难点简介如下: 继续阅读 »

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=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值
‘————————————————–
字符串合并
MsgBox CStr(13) + CStr(23)
‘字符串转换成整形相加
msgbox CInt(“12”)+12 ‘ 字符串转换成整型后与12相加, 结果:24
‘取整数去掉小数点
msgbox Int(-54.6) ‘这里比原值大的整数,结果是 -55
msgbox 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为底的自然对数
例:Log(10) 结果:2.3
5. Rnd[(N)] 产生随机数
例:Rnd 结果:0–1之间的数
6. Sin(N) 正弦函数
例:Sin(0) 结果:0
7. Sgn(N) 符号函数
‘ 说明:取正负号。Y=Sgn(X) 既 X>0 则Y=1;X=0 则Y=0;X<0 则Y= -1 8. Sqr(N) 平方根 例:Sqr(9) 结果:3 9. Tan(N) 正切函数 例:Tan(0) 结果:0 10.Atn(N) 反切函数 例:Atn(0) 结果:0 [注意]:在三角函数中,以弧度表示。 (一)字符串类函数: 1. 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:反转字符串 [格式]: 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。 日期时间类函数: 1. Year(X),Month(X),Day(X):取出年,月,日 [格式]: P=Year(X) 取出X“年”部分的数值 P=Month(X) 取出X“月”部分的数值 P=Day(X) 取出X“日”部分的数值 [说明]:Year返回的是公元年,若X里只有时间,没有日期,则日期视为#1899/12/30# 2. Hour,Minute,Second函数:取出时,分,或秒 [格式]: P=Hour(X) 取出X“时”部分的数值 P=Minute(X) 取出X“分”部分的数值 P=Second(X) 取出X“秒”部分的数值 [说明]:Hour的返回值是0---23之间 [范例]: X=10:34:23 P=Hour(X) Q=Minute(X) R=Second(X) 则输出结果:P=10,Q=34,R=23 3. DateSerial函数:合并年,月,日成为日期 [格式]:DateSerial(Y,M,D) 其中Y是年份,M为月份,D为日期 [说明]: (1) M值若大于12,则月份从12月起向后推算M-12个月;若小于1,则月份从1月起向后推算1-M个月。 (2) 若日期D大于当月的日数,则日期从当月的日数起,向后推算D-当月日数;若小于1,则日期从1日起向前推算1-D日。 [范例]: P=DateSerial(2000,02,02) 则结果为P=2000/02/02 4.TimeSerial函数:合并时,分,秒成为时间 [格式]:P=TimeSerial(H,M,S) 其中H为小时数,M为分钟数,S为秒数 [说明]:推算原理同上面的DateSerial [范例]: P=TimeSerial(6,32,45) 结果为:P=6:32:45 5.Date,Time,Now函数:读取系统的日期时间 [格式]: P=Date() P=Time() P=Now() [说明]:这三个函数都无参数 [范例]: 若当前时间为2003年8月29日晚上19点26分45秒,则 P=Now() 结果为:P=2003-08-29 19:26:45 6.MonthName:返回月份名称 [格式]:P=MonthName(X) [说明]:X参数可传入1---12,则返回值为“一月”、“二月”……,但是在英文Windows环境下,返回的是”January”,”February”…… [范例]: P=MonthName(1) 则P=“一月” 7.WeekdayName:返回星期名称 [格式]:P=WeekdayName(X) [说明]:X参数可传入1—7,则返回值为“星期日”,“星期一”……,但是在英文windows环境下,返回的是”Sunday”,”Monday”…… [范例]: P=WeekdayName(1) 结果为:P=”星期日” Trim(text1.text) 消除空格 转自:http://51vb.5d6d.com/thread-120-1-1.html