读书人

大侠高人们帮忙看下这个延时函数改成秒

发布时间: 2012-05-20 16:03:12 作者: rapoo

大侠高人们帮忙看下这个延时函数改成秒为单位 我改的对不对?
原函数:

VB code
''延迟函数   单位:毫秒    精度:> 5ms    最大延迟:< 100s'示例:TimeDelay 3 (延迟 3ms,实际延迟 >5ms。注意:lMilliseconds < 3 时无延迟效果)Public Sub TimeDelay(lMilliseconds As Long)Dim TimerC As Single, BackC As Long    TimerC = Timer + lMilliseconds / 1000    If TimerC > 86280 Then TimerC = TimerC - 100: BackC = 100   '接近午夜(差2分钟),将计时倒退 100s 前计算,防止出错        Do While TimerC > Timer - BackC                             '注意:延迟期间关闭程序 将不会结束进程        DoEvents        Sleep 5                                                 '挂起线程 5ms    LoopEnd Sub

我改成这样:
VB code
'延迟函数   单位:秒    精度:> 5s    最大延迟:< 100*1000s'示例:TimeDelay 3 (延迟 3s,实际延迟 >5s。注意:lMilliseconds < 3,000 时无延迟效果)Public Sub TimeDelay(lMilliseconds As Long)Dim TimerC As Single, BackC As Long    TimerC = Timer + lMilliseconds '/ 1000    If TimerC > 86280000 Then TimerC = TimerC - 100000: BackC = 100000   '接近午夜(差2分钟),将计时倒退 100,000s 前计算,防止出错        Do While TimerC > Timer - BackC                             '注意:延迟期间关闭程序 将不会结束进程        DoEvents        Sleep 5                                                 '挂起线程 5ms    LoopEnd Sub

他原先是毫秒,我就是把他所有的时间都乘上1000了,这样是不是就变成 秒 为单位了?

主要是"接近午夜"那个地方看不懂,说是这个地方不然会出错? 那我这一句相当于改成二十多小时复位对不对呢?: If TimerC > 86280000 Then TimerC = TimerC - 100000: BackC = 100000

另外他那个 "最大延迟:< 100s"是什么意思呢?大于100秒用这个函数是没用的?那我乘上1000以后是不是也是大于100*1000=10万秒(100000秒÷86400秒=1天3小时46分钟40秒 =27 小时46分钟40秒)这个函数也没用呢?
谢谢高人们!!

[解决办法]
这个更明了
VB code
Option ExplicitPrivate Sub Command1_Click()    Debug.Print Format(Now, "YYYY-MM-DD hh:mm:ss")    Debug.Print "ÑÓ³Ù£º10ÃëÖÓ"    DelayTime 10    Debug.Print Format(Now, "YYYY-MM-DD hh:mm:ss")End SubPrivate Sub DelayTime(ByVal lngSecond As Long)    Dim strStartTime As String    Dim lngP As Long    strStartTime = Format(Now, "YYYY-MM-DD hh:mm:ss")    Do        DoEvents    Loop Until DateDiff("s", strStartTime, Now) >= lngSecondEnd Sub
[解决办法]
Dim TimerC As Long

Timer 函数返回的就是从午夜计的秒数,因此不必乘以 1000。原来的函数参数单位是毫秒,因此要除以 1000。

读书人网 >VB

热点推荐