大侠高人们帮忙看下这个延时函数改成秒为单位 我改的对不对?
原函数:
- 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。