微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题让时间更精确
栏目游戏世界
作者释月
发布1998年第36期13版
  在应用VB编程的时候,你是否发现VB的时间控制并不十分精确,在VB中我们有时需要一个比VB自带的now()更精确的计时函数,下面的BetterNow()就是这样的一个函数,在Pentium 166 MMX的机器上,它大概每10微秒执行一次,而VB自带的函数是每180微秒执行一次。ButterNow()更精确,它支持1毫秒的事件触发,而VB的now()只支持1000毫秒的事件触发。同样的它也比Timer()更快更精确,因而它可以在记录时间流逝方面替代Timer(),比Timer()更好的是它不会在每天午夜自动清零。
  #If Win16 Then
  Private Declare Function timeGetTime Lib _
  "MMSYSTEM.DLL" () As Long
  #Else
  Private Declare Function timeGetTime Lib "winmm.dll" _
  () As Long
  #End If
  Function BetterNow() As Date
  Static offset As Date
  Static uptimeMsOld As Long
  Dim uptimeMsNew As Long
  '定义一秒
  Const oneSecond=1/(24#*60*60)
  '定义一毫秒
  Const oneMs=1/(24#*60*60*1000)
  uptimeMsNew=timeGetTime()
  '如果是第一次调用函数或运行时间超过47天,重新计算时间。
  If offset=0 Or uptimeMsNew < uptimeMsOld Then
  offset=Date-uptimeMsNew*oneMs+CDbl(Timer)*_
  oneSecond
  uptimeMsOld=uptimeMsNew
  End If
  BetterNow=uptimeMsNew*oneMs+offset
  End Function