Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#8

AW: GetTickCount beeinflusst von PC Auslastung

  Alt 4. Jun 2015, 23:55
Der Timer1 ist nicht dazu da um etwas zu zählen, schon gar nicht Ticks, sondern nur um den aktuellen Stand in Label1.Caption anzuzeigen:
Delphi-Quellcode:
uses
  DateUtils; //Die Unit DateUtils wird für die Funktion MilliSecondsBetween benötigt

var
  T1: TTime; //Globale TTime Variable um die Startzeit zu merken

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Interval ist für die Zählung irrelevant.
  // Sagt nur aus wie oft die Anzeige aktualisiert wird.
  Timer1.Interval := 1;
  Timer1.Enabled := False; //Timer1 zuerst deaktivieren
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Es wird nicht ab 0 gezählt.
  // Die 0 ist nur dazu da um festzustellen ob T1 bereits einen Wert hat
  T1 := 0;
  Timer1.Enabled := True; // Stoppur starten
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  TimeTemp: TTime;
begin
  if T1 = 0 then // Wenn T1 = 0, dann ist es der ersten Durchlauf
    T1 := Time; // In dem Fall die Startzeit merken

  // Nun die Differenz (Int64) zwischen Startzeit und aktuellen Zeit vergleichen.
  // Bei TDateTime sind ganze Werte Daten, Nachkommawerte Zeiten.
  // Deshalb TimeTemp durch 24 Stunden, 60 Minuten, 60 Sekunden und 1000 Millisekunden teilen
  // Ergebnis ist eigentlich Zeit ab 00:00:00 Uhr
  TimeTemp := MilliSecondsBetween(T1, Time) / 24 / 60 / 60 / 1000;
  // Was angezeigt wird ist eigentlich die Uhrzeit, man merkt aber keinen Unterschied
  Label1.Caption := FormatDateTime('hh:nn:ss:zzz', TimeTemp);
end;
  Mit Zitat antworten Zitat