Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#20

AW: Timer läuft ab Mitternacht rückwärts

  Alt 1. Sep 2015, 18:37
Mal ganz naive gefragt:

Du möchtest zum Zeitpunkt X festlegen: Jetzt gehts los.
Zum Zeitpunkt Y sagst Du: Fertig.

Also merkst Du Dir bei XStart := Now .
Bei Y berechnest Du Zeitspanne := Now - Start .

In der Zwischenzeit soll Irgendwo eine Uhr laufen. Niemand kann so schnell gucken, dass er ein Zeitintervall von 1ms mitbekommt.
Wie oft soll denn die Uhrzeit aktuallisiert werden?
Sekündlich, reicht doch zum Mitgucken.

Also bauen wir was in der Art:
Delphi-Quellcode:
...
  tm.Interval := 1000; // = 1 Sekunde
// tm.Interval := 500; // = 1/2 Sekunde
// tm.Interval := 250; // = 1/4 Sekunde
...
procedure TForm1.tmTimer(Sender: TObject);
begin
  Label1.Caption := FormatDateTime('nn:ss:zzz', Now - Start);
end;

procedure TForm1.ButtonStartClick(Sender: TObject);
begin
  Start := Now;
  tm.Enabled := true;
end;

procedure TForm1.ButtonEndeClick(Sender: TObject);
begin
  Zeitspanne := Now - Start;
  tm.Enabled := False;
  Label1.Caption := FormatDateTime('nn:ss:zzz', Zeitspanne);
end;
Natürlich gibt es genauere Methoden der Zeitmessung, aber wenn die abhängig davon sind, wann jemand einen Button drückt, ist jeder Aufwand dahingehend, die Genauigkeit um eventuell eine 1/2 Millisekunde zu erhöhen, eigentlich irrelevant.
Und mit Now und der Ausgabe mit FormatDateTime ist man immernoch im Bereich von einer tausendstel Sekunde, so genau werden kaum mal Weltrekorde gemessen und hier geht es um Spiele.
  Mit Zitat antworten Zitat