如何在Fire Monkey中给出准确的计时器?

时间:2013-01-16 03:54:48

标签: delphi timer delphi-xe2 firemonkey

我必须在第10秒钟为体育比赛显示一个计时器。我使用TTimer的OnTimer事件来做到这一点。间隔设置为100.我的例程正确显示当前的最小值:秒10秒(例如:02:45.7),但如果我补偿,我的计时器似乎每分钟松动约4秒钟。正常时钟。

有一种更好的方法可以在Delphi XE2(或XE3)中获得时间精度计时器吗?

1 个答案:

答案 0 :(得分:2)

您可以使用计时器显示 时钟的当前值,但使用其他方法计算已用时间。

您必须知道Windows计时器不是时间准确,即使您将其设置为每100毫秒一次,也可能需要更多时间才能触发OnTimer事件,甚至可能会错过一些时间间隔如果由于某种原因在申请处理之前已经过了两次或更多次。

例如,您可以使用系统high-resolution performance counter以纳秒精度跟踪时间。

如果您的计算机中没有高分辨率性能计数器,您还可以使用Delphi TStopwatch类封装系统调用并回退到其他方法(GetTickCount)。

另请参阅How to Accurately Measure Elapsed Time Using High-Resolution Performance Counter delphi.about.com文章。