关于GetTickCount的溢出问题

CONGCONG1105 2009-10-29 11:01:55
GetTickCount是以毫秒为单位计算从开机到现在的时间,如果时间长了,超过49.71天就会溢出,溢出以后会怎么样?出错?清零?还是?如果长时间使用的话,该注意哪些问题呢?怎么避免溢出呢?可以人工操作清零吗?
...全文
2430 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2009-10-29
  • 打赏
  • 举报
回复
我也和你有过同样的烦恼,现在是这样处理的,你看看:http://topic.csdn.net/u/20090904/23/4f67382f-a38e-4315-a7bb-80f5bb3ad574.html
CONGCONG1105 2009-10-29
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091028/14/6405c3cc-e5ed-4109-bd30-2ae5c89909c5.html?15484

我想做的是长时间采集数据,并且做到时间上的精确
getemail 2009-10-29
  • 打赏
  • 举报
回复
你管怎么清?
如果把溢出变为不溢出,还清个P
把数据类型都改为double试试

[Quote=引用 5 楼 congcong1105 的回复:]
谢谢,但是没写怎么清零啊
[/Quote]
CONGCONG1105 2009-10-29
  • 打赏
  • 举报
回复
谢谢,但是没写怎么清零啊
getemail 2009-10-29
  • 打赏
  • 举报
回复
CONGCONG1105 2009-10-29
  • 打赏
  • 举报
回复
怎么清零?
jhone99 2009-10-29
  • 打赏
  • 举报
回复
加一个变量,intDay, 记录天数

满一天GetTickCount清零,intday加1

用GetTickCount、intday共同计算差值
getemail 2009-10-29
  • 打赏
  • 举报
回复
到1天把天数请零不就得了,让它永远到不了那天
CONGCONG1105 2009-10-29
  • 打赏
  • 举报
回复
14楼写的公式可以吗?总感觉,那样也会占用时间,如果收集间隔很小的话也会不精确,实在没有别的办法的话只能这样了。
东方之珠 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jhone99 的回复:]
网上有这么一个说法

GetTickCount 函数只有当机器连续使用49.7天后才返回零

由此猜测,lz的溢出是由于GetTickCount归零引起的,如果在使用前加判断应该可以避免溢出
[/Quote]

同意.
chouchou_0723 2009-10-29
  • 打赏
  • 举报
回复
帮顶
CONGCONG1105 2009-10-29
  • 打赏
  • 举报
回复
恩,我用GetTickCount算的是采集间隔,设x为当前的毫秒数,设y为计算时间开始时的毫秒数,设z为两者间隔,

if x>=0 then
z=x-y
else
if y<0 then
z=|x-y|
else
z=|x+y|
end if

目前用的是这种办法。。。
end if
jhone99 2009-10-29
  • 打赏
  • 举报
回复
网上有这么一个说法

GetTickCount 函数只有当机器连续使用49.7天后才返回零

由此猜测,lz的溢出是由于GetTickCount归零引起的,如果在使用前加判断应该可以避免溢出
getemail 2009-10-29
  • 打赏
  • 举报
回复
你的代码怎么做的别人不知道
所以你的问题别人只能给你个思路
怎么处理只有靠你自己

[Quote=引用 11 楼 congcong1105 的回复:]
引用 9 楼 king06 的回复:
记得LZ是说用来采集数据的,也可以不清零,直接在原来的基础上累加.如果怕最终会溢出,另外做个小按钮,"清零",在不采集数据的时候(空闲)处理一下就可以了,定期维护一下.



”在不采集数据的时候(空闲)处理一下就可以了”我想知道的是这个”处理”怎么做,希望高人再详细指点一下
[/Quote]
CONGCONG1105 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 king06 的回复:]
记得LZ是说用来采集数据的,也可以不清零,直接在原来的基础上累加.如果怕最终会溢出,另外做个小按钮,"清零",在不采集数据的时候(空闲)处理一下就可以了,定期维护一下.

[/Quote]

”在不采集数据的时候(空闲)处理一下就可以了”我想知道的是这个”处理”怎么做,希望高人再详细指点一下
CONGCONG1105 2009-10-29
  • 打赏
  • 举报
回复
osQueryPerformanceCounter 函数时间长了不会溢出吗?
king06 2009-10-29
  • 打赏
  • 举报
回复
记得LZ是说用来采集数据的,也可以不清零,直接在原来的基础上累加.如果怕最终会溢出,另外做个小按钮,"清零",在不采集数据的时候(空闲)处理一下就可以了,定期维护一下.

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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