Delphi问题,timeGetTime
我使用timeGetTime取机器时间,可以精确到毫秒级。但有个问题无法解决,希望有那位高手指点。
下面是代码
var
T:array[0..30000] of longint;
J:integer;
T1:longint;
T2:longint;
z:integer;
begin
for J:=0 to 30000 do T[J]:=timeGetTime();
memo1.clear;
z:=1;
T1:=T[0];
for j:=1 to 30000 do
begin
if T1=T[J] then
inc(z)
else
begin
memo1.lines.add (format('%10d %2d',[T1,z]));
z:=1;
T1:=T[J];
end;
end;
end;
从代码执行的结果看,一般情况下,每毫秒可以读到80个左右数,但有时候只能读到1-2个数,我需要每毫秒总是能读到50个左右,有什么办法可以解决?
我的机器是奔腾166(不好意思,老牛了),除了这一段代码外,未运行其他任何程序。另外,请那位有奔三机器的同仁运行这段代码看看,每毫秒可以读到多少个数。
问题点数:34、回复次数:11Top
1 楼whoo(谁)回复于 2001-01-12 00:10:00 得分 10
系统有很多事情要多,而她要做的时候总是能打断你的。这么读的话,肯定是不行的。
去找一个高精度的定时器试一试。Top
2 楼Java_SCU(Java)回复于 2001-01-12 00:32:00 得分 10
to keyboardbug:我在我的笔记本上试了一下你的这段代码,基本上稳定在200个左右(celeron 466, 64M RAM,后台有Netant,OICQ)Top
3 楼tx117(TX117)回复于 2001-01-12 12:02:00 得分 0
请教一个低级问题,
timegettime是个什么函数?好像不是系统函数?
应该怎么调用他?Top
4 楼tx117(TX117)回复于 2001-01-15 11:56:00 得分 0
为什么我在运行的时候要报错?
delphi把timegettime当成了一个标识符说没有定义。
是不是因为delphi不能直接调用这个函数?
麻烦那位高手回答这个问题,谢谢。
帮助我也看过了,好像这是个api函数吧,就是没找到如何在Delphi中调用API函数
谢谢各位了,我很想知道。Top
5 楼Kingron(单身走我路……)回复于 2001-01-15 12:39:00 得分 0
2 tx117:
uses mmsystemTop
6 楼sender(原来是你)回复于 2001-01-15 14:07:00 得分 0
补充一点:这个API返回的值不是LOngint,而是MMTIME 类型。你在写程序的时候把光标停在timeGetTime上按F1便可直接调用WIN API 帮助,如果你有安装的话。Top
7 楼qkl(康)回复于 2001-01-16 01:04:00 得分 5
其实由于多任务的原因你不可能很精确地作到这点.Top
8 楼yiyu(议鱼(是只什么鱼?))回复于 2001-01-16 09:34:00 得分 0
API中有很详细的帮助不过是英文的。。 好象是不会那么的精确!!
在帮助中 选取Windows SDK后输入Top
9 楼tx117(TX117)回复于 2001-01-16 09:56:00 得分 5
有个很奇怪的现象,
大家看看我的运行结果。
我把数组设为0-600000,只有这样才能计算出来。但是结果很奇怪,时间是按照10来递增的。
2833874 43752
2833884 52313
2833894 52429
2833904 51593
2833914 52425
2833924 52421
2833934 52444
2833944 52426
2833954 51475
2833964 52417
2833974 51748
Top
10 楼tx117(TX117)回复于 2001-01-16 09:59:00 得分 0
2 sender timegettime返回的值是一个DWORD,你说的返回一个MMTIME的是另外一个函数
TIMEGETSYSTEMTIME 如下
The only difference between this function and the timeGetSystemTime function is that timeGetSystemTime uses the MMTIME structure to return the system time. The timeGetTime function has less overhead than timeGetSystemTime.
Top
11 楼lhztco99(环保概念股)回复于 2001-01-16 10:25:00 得分 4
timegettime 早过时了 在win32 中使用 gettickcount 作为替代函数
该函数在增量上好象上无法返回小于毫秒的个数位,总是 10 的倍数。 Top




