![]() |
Probleme mit DateTimePicker
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:
Mit ihr wird der Countdown gestartet.
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; Aufgerufen habe ich sie so:
Code:
Stoppen ist im OnTimer Objekt meines Timers. Und sieht so aus:
startcountdown(DateTimePicker1.Time);
Code:
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
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 ..... 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 |
Re: Probleme mit DateTimePicker
Hallo
habe jetzt nicht groß drübergeschaut, aber: Zitat:
Nimm besser
Delphi-Quellcode:
Mfg Frank
if time<= timer then
|
Re: Probleme mit DateTimePicker
danke dir, hat leider nichts am Problem geändert.
|
Re: Probleme mit DateTimePicker
ich würde mal auf
Delphi-Quellcode:
tippen ... (falls nicht, dann poste den ganzen code )
if time >= timer then
[edit] So ein Blödsinn, (was so ein Gläschen guter Rotwein mit den grauen Zellen alles anrichten kann tststs ....) natürlich muß das so wie von Keldorn geschrieben lauten
Delphi-Quellcode:
der einzige fall, wäre wenn der timer auf nächsten Tag gestellt wird, dann mußt du einfach überall statt Time einfach now verwenden z.b.:
if time <= timer then
Delphi-Quellcode:
und
function TForm1.startcountdown(Wert: TTime): TTime;
begin ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'einstellungen.ini'); Timer := now+ Wert;
Delphi-Quellcode:
[/edit]
if now <= timer then
und wenn deine Funktion keinen Rückgabewert braucht, dann mach doch ne procedure draus, dann meckert der Compiler auch nicht |
Re: Probleme mit DateTimePicker
Hallo,
Ich danke dir!
Code:
hat geholfen. Woran lag das den nun genau, das dies funktioniert? Vorher hatte ich nen Edit1, dannach nen EditMask1 Feld. Mit beiden hat es siehe oben funktioniert. Stehe grad bisle auf dem Schlauch. Vielleicht morgen mit klarem Kopf nochmal anschauen, ne kurze Erläuterung wäre aber lieb.
if now <= timer then
gruß shAd |
Re: Probleme mit DateTimePicker
das du nicht nacheinander jeden wert bekommst (von der zeit), sondern das in kleinen sprüngen hüpft. d.h. du triffst nicht mit sicherheit (sogar ziemlich unwahrscheinlich) genau die zeit. wenn du aber testest, ob der angegebene zeitpunkt überschritten ist, klappt alles wunderbar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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