Suche…


Verwenden der Windows-API GetTickCount

Die Windows-API-Funktion GetTickCount gibt die Anzahl der Millisekunden zurück, seit das System (Computer) gestartet wurde. Das einfachste Beispiel lautet:

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

Beachten Sie, dass GetTickCount 32-Bit- DWORD - DWORD sodass alle 49,7 Tage DWORD werden. Um das Wrapping zu vermeiden, können Sie entweder GetTickCount64 (verfügbar seit Windows Vista) oder spezielle Routinen zur Berechnung der Tick-Differenz verwenden:

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;

Auf GetTickCount diese Routinen falsche Ergebnisse, wenn das Intervall von zwei GetTickCount Aufrufen von GetTickCount die 49,7-Tage-Grenze überschreitet.

So konvertieren Sie Millisekunden in Sekunden:

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-Datensatz verwenden

Aktuelle Versionen von Delphi werden mit dem TStopwatch- Datensatz geliefert , der für die Zeitintervallmessung dient. Verwendungsbeispiel:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow