AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Timer läuft ab Mitternacht rückwärts
Thema durchsuchen
Ansicht
Themen-Optionen

Timer läuft ab Mitternacht rückwärts

Ein Thema von MisterIXI · begonnen am 1. Sep 2015 · letzter Beitrag vom 2. Sep 2015
Antwort Antwort
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#1

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

  Alt 1. Sep 2015, 16:40
Wozu wird denn ein Timer überhaupt benötigt?

Wenn ich wissen möchte, wieviel Zeit vergangen ist zwischen dem Zeitpunkt x und y, dann berechne ich das einfach. Dazu benötige ich keinen Timer und zum Zeitpunkt der Abfrage ist der Wert zuverlässig genau.
Schöne Lösung, aber rate mal, welche Auflösung/Genauigkeit sie hat. Richtig, exakt dieselbe wie timeGetTime. D.h. standardmäßig 15,625 ms, es sei denn die globale Timer-Auflösung wurde per timeBeginPeriod / NtSetTimerResolution verändert.

Übrigens: Die RAD Studio IDE setzt die Timer-Auflösung auf 1 ms! Das hat mich beim Debuggen schon mal gebissen. Hatte timeBeginPeriod(1) in meinem Programm vergessen und mich gewundert, warum es nur richtig lief wenn es aus der IDE heraus gestartet wurde, nicht allein.

Mit diesem kleinen Konsolenprogramm kann man minimale und aktuelle Auflösung der Multimedia-Timer ansehen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

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

  Alt 1. Sep 2015, 17:02
Wozu wird denn ein Timer überhaupt benötigt?

Wenn ich wissen möchte, wieviel Zeit vergangen ist zwischen dem Zeitpunkt x und y, dann berechne ich das einfach. Dazu benötige ich keinen Timer und zum Zeitpunkt der Abfrage ist der Wert zuverlässig genau.
Schöne Lösung, aber rate mal, welche Auflösung/Genauigkeit sie hat. Richtig, exakt dieselbe wie timeGetTime. D.h. standardmäßig 15,625 ms, es sei denn die globale Timer-Auflösung wurde per timeBeginPeriod / NtSetTimerResolution verändert.
Es ging hier mehr um das Prinzip, dass man keinen Timer nimmt um eine Zeitspanne zu bestimmen, sondern man merkt sich die Startzeit und berechnet sich die Zeitspanne zwischen der gemerkten Startzeit und einem beliebigen anderen Zeitwert. Welche Zeitwertquelle man dabei verwendet ist - für das Prinzip - unerheblich, beim Vergleichen sollte es immer die Gleiche sein.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

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

  Alt 1. Sep 2015, 17: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
MisterIXI

Registriert seit: 4. Jun 2015
15 Beiträge
 
Delphi 7 Personal
 
#4

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

  Alt 1. Sep 2015, 18:10
Das mit dem DoubleBuffered hat funktioniert! Ich wusste bis jetzt nicht mal dass die Property existiert.

Vielen, vielen Dank euch allen für die Hilfe! Ihr habt mir echt weitergeholfen.

Und ich werde mir dann mal die Tage, wenn die Änderungen alle geklappt haben, die anderen Vorschläge anschauen. Dann weiß ich was ich nächstes mal besser machen kann. ^^
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 2. Sep 2015, 17:33
Erstens:
Sei doch froh wenn die Zeit rückwärts läuft !!
Das wünsche ich mir schon seit Jahren ...

Zweitens:
Es gibt auch TStopWatch
Ist vielleicht moderner, w.g. MultiPlattform

Rollo
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#6

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

  Alt 2. Sep 2015, 17:58
Es gibt auch TStopWatch
Ist vielleicht moderner, w.g. MultiPlattform
Das habe ich bereits in Nachricht #9 erwähnt. Aber wenn MisterIXI noch mit Delphi 7 unterwegs ist, dann hilft ihm das nicht.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 2. Sep 2015, 18:12
Sorry, hab ich wohl um die Zeit überlesen.
Sollte bald mal ins Bett gehen

Rollo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz