关于时间计算!~~~`

mdejtod 2006-10-14 09:23:52
循环开始后,让TIMER控件的ENABLE为真,循环结束后,让TIMER控件的ENABLE为假,要怎么计算循环要花多少时间?
我写了个就像我说的一样可是计算出来的时间很不精确,而且只能是计算一分钟这内的时间,就是循环开始时取得当前的秒数,循环结束后再取秒数,最后两个相减~~~可是要是超过一分钟了就会有错误。可不可以精确到毫秒的啊?帮帮忙~~
...全文
219 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
solokey 2006-10-19
  • 打赏
  • 举报
回复
var
BeginTime: Int64;
UsedTime: Int64;
begin
BeginTime := GetTickCount;
//do sth

UsedTime := GetTickCount - BeginTime;
end;

UsedTime,就是你中间代码消耗的时间.GetTickCount参考MSDN,是一个CPU的计数器,单位为MS.
mdejtod 2006-10-19
  • 打赏
  • 举报
回复
好的,谢谢两位~
mdejtod 2006-10-14
  • 打赏
  • 举报
回复
这样可不可以一直显示出来,我是说时间的变化
spirit_sheng 2006-10-14
  • 打赏
  • 举报
回复
不要用Timer, 按以下示例:
使用GetTickCount(), 其返回开机至目前的毫秒数
注意: 如果你的机器是连续运行, 其加至 $FFFFFFFF 时, 下一毫秒会回到0, 这大概需要49.7天

// 返回两个Tick之间的毫秒数
DWORD GetTickDiff(oldTick, newTick: DWORD): DWORD;
begin
if oldTick > newTick then
Result := $FFFFFFFF - oldTick + newTick
else
Result := newTick - oldTick;
end;

procedure YourProc;
var
OldTick: DWORD;
begin
oldTick := GetTickCount;
repeat
// ...
until (...); // 你的循环
ShowMessage(IntToStr(GetTickDiff(oldTick, GetTickCount)));
end;
mdejtod 2006-10-14
  • 打赏
  • 举报
回复
??
wengshengli 2006-10-14
  • 打赏
  • 举报
回复
??

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧