Wünsche euch einen guten Abend,
Ich versuche einen Countdown zu schreiben, ich habe mir als Eingabemöglichkeit nen DateTimePicker ausgesucht, da falscheingaben dort nicht möglich sind, und er mir zumindestens eigentlich schon alles im richtigen Format liefert.
Nun habe ich mir eine Funktion geschrieben:
Code:
private
{ Private-Deklarationen }
function startcountdown(Wert: TTime): TTime;
....
function TForm1.startcountdown(Wert: TTime): TTime;
begin
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+
'einstellungen.ini');
Timer := Time + Wert;
Ini.WriteTime('Main','Countdown Time',Wert);
sndPlaySound(nil, snd_sync or snd_NoDefault);
DateTimePicker1.Time := Wert;
Form1.FormStyle := fsNormal;
Timer1.Enabled := TRUE;
Form1.Color := clTeal;
Label1.Font.Color := clRed;
end;
Mit ihr wird der Countdown gestartet.
Aufgerufen habe ich sie so:
Code:
startcountdown(DateTimePicker1.Time);
Stoppen ist im OnTimer Objekt meines Timers. Und sieht so aus:
Code:
if(Time <> Timer) then begin
Label1.Caption := FormatDateTime('hh":"mm":"ss',Time-Timer);
Form1.Caption := 'Count-O-mAt - ' + FormatDateTime('hh":"mm":"ss',Time-Timer);
Application.Title := FormatDateTime('hh":"mm":"ss',Time-Timer) + ' - Count-O-mAt';
CoolTrayIcon1.Hint := FormatDateTime('hh":"mm":"ss',Time-Timer) + ' Stunden verbleibend';
......
end
else begin
Timer1.Enabled := FALSE;
.....
Und die anderen Dinge die gemacht werden sollen wenn der Timer durch ist
.....
Nun habe ich seitdem ich von MaskEdit1 auf den DateTimePicker umgestiegen bin das Problem, das er zwar brav bis 0 runtercounted, dann aber bei 23:59:59 wieder anfängt. Und die Bedingung - Timer ist nichtmehr gültig tirtt irgendnwie nicht mehr ein
Programm liefert auch ne Warnung beim Compilieren: "Rückgabewert von startcountdown könnte undefiniert sein". Wobei so wie ich das sehe hat, und braucht meine Funktion keinen Rückgabewert.
Vielleicht hilft mir jemand auf die Sprünge, sieht mir nach nem ganz bösen logischem Fehler aus.
Vielen Dank schonmal im Vorraus für eure Hilfe!
Viele Grüße
shAd