![]() |
Re: Restzeit von einen Countdown
Ich verstehe nicht genau was du meinst. Ich dachte er zählte vor meinem Korrekturpost so:
Code:
und dann hast du geschrieben
00:13:03 - 00:13:02 - 00:13:01 - 00:13:00 - 00:12:60 - 00:12:59 - 00:12:58
Zitat:
Code:
Und so ist das ja ok, oder?
00:13:03 - 00:13:02 - 00:13:01 - 00:13:00 - 00:12:59 - 00:12:58 - 00:12:57
Grüße Faux |
Re: Restzeit von einen Countdown
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,
ne mom zählt er so 00:13:01 - 00:13:-1 - 00:12:59 und vorher hat er so gezählt 00:13:01 - 00:13:-1 - 00:12:58 Aber ihr könnt euch selber überzeugen wenn ihr es dann besser versteht was ich meine Aber ned erschrecken wenn da noch ein paar variabeln sind die noch ned benutzt sind die muss ich noch rausnehmen MFG Sven |
Re: Restzeit von einen Countdown
so müßte es funktionieren
Delphi-Quellcode:
var endtime:TDateTime;
procedure TMain.Button1Click(Sender: TObject); begin endtime:=Now+EncodeTime(StrToInt(Edit1.Text),StrToInt(Edit2.Text), StrToInt(Edit3.Text),0); Timer1.Interval:=500; // nicht 1000 Timer1.Enabled:=true; end; procedure TMain.Timer1Timer(Sender: TObject); var hh,mm,ss,ms:word; timetoend:TDateTime; begin timetoend:=endtime-Now; if timetoend<0 then timetoend:=0; DecodeTime(timetoend,hh,mm,ss,ms); Edit1.Text:=IntToStr(hh); Edit2.Text:=IntToStr(mm); Edit3.Text:=IntToStr(ss); if timetoend>0 then exit; Timer1.enabled:=false; ShowMessage('Deine Zeit ist abgelaufen.'); end; |
Re: Restzeit von einen Countdown
Zitat:
|
Re: Restzeit von einen Countdown
Zitat:
Ich habe ja nicht deine variabeln benutzt ich hab sie eben abgeändert wie ich sie brauche. @ Amateurprofi Ja dein Code geht auch Nur was mir aufgefallen ist nach den man auf Start klickt laufen die ersten beiden sekunden zu schnell ab und erst dann läuft er normal. MFG Sven |
Re: Restzeit von einen Countdown
Hallo Sven,
bei mir laufen auch die ersten Sekunden normal. Was passiert denn in dem Programm?: 1) Bei Button1Click werden die Stunden, Minuten, Sekunden aus den Edit Feldern geholt, in TDateTime umgewandelt. Das Ergebnis wird zum aktuellen Datum.Zeit addiert und in endtime gespeichert. Dann wird der Timer auf ein Intervall von 1/2 Sekunde gestellt und enabled auf true gesetzt. Also sollte Timer1Timer jede 1/2 Sekunde aufgerufen werden. 2) Bei Timer1Timer wird dann die Differenz zwischen endtime und aktueller Zeit, also die Restzeit in Stunden, Minuten, Sekunden umgewandelt und in die Edit Felder gestellt. Wenn nun die ersten Sekunden bei Dir schneller ticken, dann fallen mir nur zwei mögliche Ursachen ein (a) der Timer läßt sich in den ersten Sekunden etwas mehr Zeit (b) die Uhr geht falsch. Bedenke : Das Programm zählt nicht die hh,mm,ss runter sondern berechnet bei jedem Timer Event die Restzeit neu. Vielleicht solltest Du mit dem QueryPerformanceCounter arbeiten. Ist etwas aufwendiger, sollte aber exakter laufen. Gruß, Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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