![]() |
Brauche Hilfe bei der Stoppuhrformatierung
Hallo,
bin wieder mal da und hab gleich ein Problem :-D Ich formatiere in meinem Programm wie folgt eine Stoppuhr:
Delphi-Quellcode:
Wenn es weniger als eine Stunde ist, werden nur Minuten und Sekunden angezeigt, bei mehr als eine Stunde noch die Stunden dazu. Funktioniert also soweit alles gut. Aber wenn ich z.B die Stoppuhr kurz vor 0:00 Uhr einschalte, es vergehen ein paar Minuten, und es wird 0:00 Uhr spielt die Stoppuhr verrückt. Die Formatierung springt auf hh:nn:ss und auf der Stoppuhr wird 23 Stunden noch was angezeigt. :roteyes:
procedure TForm1.Timer6Timer(Sender: TObject);
begin if HourOf(Time - StartTimePlay)=0 then Label6.Caption := FormatDateTime('nn:ss', Time - StartTimePlay) else Label6.Caption := FormatDateTime('hh:nn:ss', Time - StartTimePlay); end; Kann mir jemand helfen diesen Fehler zu korrigieren? Selber komme ich nicht mehr weiter. Das einzigste was ich rausgefunden habe, dass um 0:00 Uhr die HourOf(Time - StartTimePlay) = 23 ist. Danke! |
Re: Brauche Hilfe bei der Stoppuhrformatierung
Von welchem Typ ist StartTimePlay?
Du kannst auch eine Stoppuhr mit GetTickCount programmieren, die Differenz ist dann in Millisekunden, musst dann nur etwas rumrechnen, hast aber nicht das Problem mit dem Tageswechsel. |
Re: Brauche Hilfe bei der Stoppuhrformatierung
Kann dierses 23h eventuell durch Rechenungenauigkeiten entstehen, die Komponente arbeitet doch intern mit Gleitkommazahlen?
Versuche einmal, zur aktuellen Zeit prinzipiell z.B. 1ms dazuzurechnen und der Komponente den geringfügig erhöhten Wert füttern. edit: wird wahrscheinlich auch nichts bringen, ausser dass das Problem eine ms früher auftritt. Du schreibst 23h noch was - ist das noch was >= 60 Minuten? |
Re: Brauche Hilfe bei der Stoppuhrformatierung
Zitat:
Delphi-Quellcode:
StartTimePlay: TTime;
Zitat:
|
Re: Brauche Hilfe bei der Stoppuhrformatierung
![]() |
Re: Brauche Hilfe bei der Stoppuhrformatierung
![]() ![]() Verwende statt ![]() ![]() GetTickCount = Zeit in Millisekunden seit Windowsstart Now = Zeit in Tagen seit einem bestimmten Datum (Tagesanteile ala Stunden und Minuten stecken im Nachkommaanteil) Time = Zeit seit Tagesanfang ... also nächster Tag = anderer Ausangspunkt = nicht so leicht verrechenbar, da man selber den Tagesübergang, bzw. die Überänge einrechnen muß. |
Re: Brauche Hilfe bei der Stoppuhrformatierung
|
Re: Brauche Hilfe bei der Stoppuhrformatierung
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 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