CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

Delphi问题,timeGetTime

楼主keyboardbug(蓝夜之光)2001-01-11 23:42:00 在 Delphi / VCL组件开发及应用 提问

我使用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

相关问题

  • timeGetTime
  • Delphi?
  • Delphi?
  • 急急急.......各位大牛,关于API函数,TimeGEtTime在delphi中怎么调用
  • VC or Delphi?
  • Delphi and VB
  • delphi print
  • Delphi 6
  • VC++ to DELPHI
  • Delphi + SDK

关键词

  • 函数
  • 代码
  • delphi
  • api
  • timegettime
  • timegetsystemtime
  • mmtime
  • 调用
  • 个数
  • longint

得分解答快速导航

  • 帖主:keyboardbug
  • whoo
  • Java_SCU
  • qkl
  • tx117
  • lhztco99

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo