AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Countdown funktioniert nicht richtig?!

Ein Thema von BullsEye · begonnen am 26. Aug 2008 · letzter Beitrag vom 27. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#1

Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 14:46
Hallo DP'ler,

Also ich habe einen Countdown mit folgendem Code

Delphi-Quellcode:
procedure TForm2.Timer3Timer(Sender: TObject);
VAR
EndDatum : TDateTime;
Aktuell : TDateTime;
Dazwischen : Integer;
Tage, Stunden, Minuten, Sekunden : Integer;
BEGIN
// Countdown
   DateTimePicker1.Time := DateTimePicker2.Time;
   EndDatum := DateTimePicker1.DateTime;
   Aktuell := Now;
   Dazwischen := SecondsBetween(Aktuell, EndDatum);
   Tage := Dazwischen div (60*60*24);
   Dazwischen := Dazwischen - (Tage * 60 * 60 * 24);
   Stunden := Dazwischen div (60*60);
   Dazwischen := Dazwischen - (Stunden * 60 * 60);
   Minuten := Dazwischen div 60;
   Dazwischen := Dazwischen - ( Minuten * 60);
   Sekunden := Dazwischen;
   Form1.Label4.Font.Color := clred;
   Form1.Label4.Caption := Format('%d Tage, %d Stunden, %d Minuten & %d Sekunden bis ' + Edit5.Text + '!', [Tage, Stunden, Minuten, Sekunden]);
IF Dazwischen <= 0 THEN BEGIN // ggf liegt hier der Fehler
IF CheckBox10.Checked THEN BEGIN
sndPlaySound(PChar(ExtractFilePath(ParamStr(0)) + 'Wecker.wav'),SND_ASYNC);
END;
 ShowMessage('Ihr Countdown ist nun beendet! '+ (Edit5.text));
Form1.Label4.Hide;
sndPlaySound(nil,0);
END;
END;
Soweit geht das auch alles. Allerdings wenn ich den Countdown auf 15:46:10 einstelle bekomme ich auch ne Nachricht, das der Countdown beendet sei bei 15:45:10. Sprich er vergleicht die Sekunden?!
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 14:51
versuchs doch mit Abs(Dazwischen)
Edit: quatsch dann geht dir der Zeitpunkt durch die Lappen.. hmm..
hast ma auf >= geprüft?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#3

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 14:54
Zitat von Angel4585:
hast ma auf >= geprüft?
Das kann nicht sein. Habs trotzdem getestet und es ist genau das rausgekommen, was ich erwartet habe:
jedes mal, wenn zwischen der aktuellen Zeit und der Zeit bis zum Countdown mehr als 0 Sekunden liegen bekomme ich ne Nachricht "Countdown beendet" Sprich ununterbrochen bekomme ich die Meldung
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#4

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 15:01
Du ziehst die ganze zeit Tage, Stunden und Minuten von Dazwischen ab
das heisst selbst wenn es noch mehrere tage sind werden sie nicht berücksichtigt

also vergleicht er effektiv tatsächlich nur die sekunden

Schreib dir den Wert von Dazwischen in eine extra variable und frag diese ab, dann sollte es gehn
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 15:02
Ich frage mich, wieso Du immer wieder von "Dazwischen" subtrahierst. Ist das wirklich richtig so?

[edit] Da war ich wohl nicht alleine [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benedikt
(Gast)

n/a Beiträge
 
#6

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 15:07
Unabhängig davon dass es bestimmt auch anders mit dem "Dazwischen" geht von wegen dem Subtrahieren, du könntest doch auch einfach "Sekunden", "Minuten", etc. auf <=0 überprüfen und nicht nur "Dazwischen" (die Werte hast du ja sowieso)...

Edit: Mhhh...wobei das natürlich das Gleiche ist wie einfach den ursprünglichen Wert von SecondsBetween zu merken
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 15:10
Ich denke, das geht auch um einiges kürzer. Man subtrahiert die aktuelle Zeit von der eingegebenen und gibt das Ergebnis mit FormatDateTime aus. Ist das Ergebnis <= 0, ist die Endzeit erreicht bzw. überschritten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#8

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 15:18
Delphi-Quellcode:
procedure TForm2.Timer3Timer(Sender: TObject);
VAR
EndDatum : TDateTime;
Aktuell : TDateTime;
Dazwischen : Integer;
Tage, Stunden, Minuten, Sekunden : Integer;
BEGIN
// Countdown
   DateTimePicker1.Time := DateTimePicker2.Time;
   EndDatum := DateTimePicker1.DateTime;
   Aktuell := Now;
   Dazwischen := SecondsBetween(Aktuell, EndDatum);
   Tage := Dazwischen div (60*60*24);
   Dazwischen := Dazwischen - (Tage * 60 * 60 * 24);
   Stunden := Dazwischen div (60*60);
   Dazwischen := Dazwischen - (Stunden * 60 * 60);
   Minuten := Dazwischen div 60;
   Dazwischen := Dazwischen - ( Minuten * 60);
   Sekunden := Dazwischen;
   Form1.Label4.Font.Color := clred;
   Form1.Label4.Caption := Format('%d Tage, %d Stunden, %d Minuten & %d Sekunden bis ' + Edit5.Text + '!', [Tage, Stunden, Minuten, Sekunden]);
IF (Tage <= 0) AND (Stunden<=0) AND (Minuten<0) AND (Sekunden<=0) THEN BEGIN // <--------------------
IF CheckBox10.Checked THEN BEGIN
sndPlaySound(PChar(ExtractFilePath(ParamStr(0)) + 'Wecker.wav'),SND_ASYNC);
END;
 ShowMessage('Ihr Countdown ist nun beendet! '+ (Edit5.text));
Form1.Label4.Hide;
sndPlaySound(nil,0);
END;
END;
So hab ich das nun aber irgendwie bekomm ich gar keine Meldung mehr?!

Nach DeddyH's Vorschlag:
Delphi-Quellcode:
procedure TForm2.Timer3Timer(Sender: TObject);
VAR
jetzt, ziel, erg : TDateTime;
BEGIN
jetzt := now;
ziel := DateTimePicker1.Date + DateTimePicker2.Time;
erg := ziel - jetzt;
IF erg <= 0 then BEGIN
IF CheckBox10.Checked THEN BEGIN
sndPlaySound(PChar(ExtractFilePath(ParamStr(0)) + 'Wecker.wav'),SND_ASYNC);
END;
 ShowMessage('Ihr Countdown ist nun beendet! '+ (Edit5.text));
Form1.Label4.Hide;
sndPlaySound(nil,0);
end;
end;
  Mit Zitat antworten Zitat
Benedikt
(Gast)

n/a Beiträge
 
#9

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 17:59
Zitat von BullsEye:
IF (Tage <= 0) AND (Stunden<=0) AND (Minuten<0) AND (Sekunden<=0) THEN BEGIN // <------- So hab ich das nun aber irgendwie bekomm ich gar keine Meldung mehr?!
Vermutlich weil Minuten niemals <0 wird

Wobei die Lösung von DeddyH mit FormatDateTime ohnehin viel schöner ist...

MfG Benedikt
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#10

Re: Countdown funktioniert nicht richtig?!

  Alt 26. Aug 2008, 18:02
Zitat von BullsEye:
IF (Tage <= 0) AND (Stunden<=0) AND (Minuten<0) AND (Sekunden<=0) THEN BEGIN // <--------------------
Du prüfst netterweise alles auf <=. Und was ist mitr Minuten? Das wird nur auf < geprüft.

Bernhard

EDIT: Na ja, da war einer ohne roten Kasten schneller.
Edit2: Noch ne Frage:

In deinem 1. Code hast du die Zeile:
DateTimePicker1.Time := DateTimePicker2.Time;
Im 2. Code wird daraus:
ziel := DateTimePicker1.Date + DateTimePicker2.Time;
Kann das ein Auslöser für eine nicht vorhandene Meldung sein?
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz