Zoeken…


Met behulp van Windows API GetTickCount

De Windows API GetTickCount functie retourneert het aantal milliseconden sinds het systeem (computer) is gestart. Het eenvoudigste voorbeeld volgt:

var
  Start, Stop, ElapsedMilliseconds: cardinal;
begin
  Start := GetTickCount;
  // do something that requires measurement
  Stop := GetTickCount;
  ElapsedMillseconds := Stop - Start;
end;

Houd er rekening mee dat GetTickCount 32-bits DWORD retourneert, zodat deze elke 49,7 dagen wordt verpakt. Om inpakken te voorkomen, kunt u GetTickCount64 (beschikbaar sinds Windows Vista) of speciale routines gebruiken om het tekenverschil te berekenen:

function TickDiff(StartTick, EndTick: DWORD): DWORD;
begin
  if EndTick >= StartTick
    then Result := EndTick - StartTick
    else Result := High(NativeUInt) - StartTick + EndTick;
end;

function TicksSince(Tick: DWORD): DWORD;
begin
  Result := TickDiff(Tick, GetTickCount);
end;

In ieder geval zullen deze routines onjuiste resultaten retourneren als het interval van twee opeenvolgende oproepen van GetTickCount de grens van 49,7 dagen overschrijdt.

Voorbeeld van milliseconden naar seconden converteren:

var
  Start, Stop, ElapsedMilliseconds: cardinal;
begin
  Start := GetTickCount;
  sleep(4000); // sleep for 4 seconds
  Stop := GetTickCount;
  ElapsedMillseconds := Stop - Start;
  ShowMessage('Total Seconds: '
      +IntToStr(round(ElapsedMilliseconds/SysUtils.MSecsPerSec))); // 4 seconds
end;

TStopwatch-record gebruiken

Recente versies van Delphi worden geleverd met het TStopwatch- record dat bedoeld is voor tijdsintervalmeting. Voorbeeld gebruik:

uses
  System.Diagnostics;

var
  StopWatch: TStopwatch;
  ElapsedMillseconds: Int64;
begin
  StopWatch := TStopwatch.StartNew;
  // do something that requires measurement
  ElapsedMillseconds := StopWatch.ElapsedMilliseconds;
end;


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow