Delphi 2007 秒表类

发布于 2025-01-04 06:40:59 字数 82 浏览 0 评论 0原文

是否有一个秒表类(最好是开源的)提供与 Delphi XE 中的 Diagnostics.TStopwatch 相同的服务?

Is there a stopwatch Class (preferably opensource) providing the same service as Diagnostics.TStopwatch in Delphi XE does?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

随梦而飞# 2025-01-11 06:40:59

绝地计划中的 JCLCounter 与 TStopwatch 非常相似。

JCLCounter from Project Jedi is very similar to TStopwatch.

残月升风 2025-01-11 06:40:59

我意识到它的技术含量较低,但 Win32 API GetTickCount 函数对我来说已经足够好了。在大多数 PC 上,分辨率约为 15-20 毫秒。

我这样使用它,没有任何类,但你可以轻松编写自己的类:

function TimerElapsed(tick1,tick2:DWORD):DWORD;
begin
  if ((tick2-tick1) < $80000000) then { timer roll-over check }
      result := (tick2 - tick1) { normal }
  else
      result := (not tick1)+tick2; {rollover calculation}
end;

function TimingDemo:Cardinal;
var 
  time1,time2:Cardinal;
begin
   time1 := GetTickCount;
   DoSomethingSlow;
   time2 := GetTickCount;
   result  :=  TimerElapsed(time1,time2); // return elapsed mSec.
end;

I realize it's low tech, but the Win32 API GetTickCount function works well enough for me. On most PCs the resolution is around 15-20 milliseconds.

I use it like this, without any classes, but you could easily write your own class:

function TimerElapsed(tick1,tick2:DWORD):DWORD;
begin
  if ((tick2-tick1) < $80000000) then { timer roll-over check }
      result := (tick2 - tick1) { normal }
  else
      result := (not tick1)+tick2; {rollover calculation}
end;

function TimingDemo:Cardinal;
var 
  time1,time2:Cardinal;
begin
   time1 := GetTickCount;
   DoSomethingSlow;
   time2 := GetTickCount;
   result  :=  TimerElapsed(time1,time2); // return elapsed mSec.
end;
私藏温柔 2025-01-11 06:40:59

我的偏好是这个 (TstopUhr )实现在 Delphi Praxis 中找到论坛。

摘录:

type
  TStopUhr = class
     private
       FStoppedTime : Int64;
       FStartValue : Int64;
       FStopValue : Int64;
       FStartTime : TDateTime;
       FStopTime : TDateTime;
       FMethode : TStopUhrMethode;
       FMethodeInUse : TStopUhrMethode;
     protected
       function GetStoppedTimeStr: String;
     public
       Constructor Create;
       Destructor Destroy; Override;
       procedure Start;
       procedure Stop;
       property StartTime : TDateTime read FStartTime;
       property StopTime : TDateTime read FStopTime;
       property StoppedTime : Int64 read FStoppedTime;
       property StoppedTimeStr : String read GetStoppedTimeStr;
       property MeasureMethode : TStopUhrMethode Read FMethode Write FMethode;
     end;

使用示例:

var
   StopUhr : TStopUhr;
 begin
   StopUhr := TStopUhr.Create;
   StopUhr.MeasureMethode := su_TickCount; // default = su_DateTime
   StopUhr.Start;

  // zu messende Aufgabe

  StopUhr.Stop;
   ShowMessage(StopUhr.StoppedTimeStr);
   StopUhr.Free;
 end; 

它提供了与问题评论线程中推荐的 RRUZ 类似的功能。

My preference goes to this (TStopUhr) implementation found in Delphi Praxis forum.

Excerpt:

type
  TStopUhr = class
     private
       FStoppedTime : Int64;
       FStartValue : Int64;
       FStopValue : Int64;
       FStartTime : TDateTime;
       FStopTime : TDateTime;
       FMethode : TStopUhrMethode;
       FMethodeInUse : TStopUhrMethode;
     protected
       function GetStoppedTimeStr: String;
     public
       Constructor Create;
       Destructor Destroy; Override;
       procedure Start;
       procedure Stop;
       property StartTime : TDateTime read FStartTime;
       property StopTime : TDateTime read FStopTime;
       property StoppedTime : Int64 read FStoppedTime;
       property StoppedTimeStr : String read GetStoppedTimeStr;
       property MeasureMethode : TStopUhrMethode Read FMethode Write FMethode;
     end;

Usage sample:

var
   StopUhr : TStopUhr;
 begin
   StopUhr := TStopUhr.Create;
   StopUhr.MeasureMethode := su_TickCount; // default = su_DateTime
   StopUhr.Start;

  // zu messende Aufgabe

  StopUhr.Stop;
   ShowMessage(StopUhr.StoppedTimeStr);
   StopUhr.Free;
 end; 

It provides a similar functionality to what RRUZ recommended in the question's comment thread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文