首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2012-05-20 
大侠高人们帮忙看下这个延时函数改成秒为单位 我改的对不对?原函数:VB code延迟函数单位:毫秒精度: 5ms

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

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。

热点排行