AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit DateTimePicker

Ein Thema von shAd · begonnen am 16. Okt 2004 · letzter Beitrag vom 16. Okt 2004
Antwort Antwort
shAd

Registriert seit: 26. Jul 2004
Ort: Stuttgart
19 Beiträge
 
Delphi 7 Professional
 
#1

Probleme mit DateTimePicker

  Alt 16. Okt 2004, 20:01
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
Er erreichte einen Speisesaal. Wenn man an dem dort stehenden langen Tisch Platz nahm, so konnte man ziemlich sicher sein, daß die Leute am gegenüberliegenden Ende in einer anderen Zeitzone saßen.
- Terry Pratchett in Wachen! Wachen!
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Probleme mit DateTimePicker

  Alt 16. Okt 2004, 20:36
Hallo

habe jetzt nicht groß drübergeschaut, aber:
Zitat:
if(Time <> Timer) then begin
...
else begin
Timer1.Enabled := FALSE;
Tdatetime ist ein double-wert, darin enthalten sind auch die millisekunden ... Die Wahrscheinlichkeit, das time=timer ist und damit dein Timer1 gestoppt wird, ist nahe 0, da es schwer sein wird, genau diesen Punkt zu treffen.
Nimm besser
if time<= timer then Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
shAd

Registriert seit: 26. Jul 2004
Ort: Stuttgart
19 Beiträge
 
Delphi 7 Professional
 
#3

Re: Probleme mit DateTimePicker

  Alt 16. Okt 2004, 21:51
danke dir, hat leider nichts am Problem geändert.
Er erreichte einen Speisesaal. Wenn man an dem dort stehenden langen Tisch Platz nahm, so konnte man ziemlich sicher sein, daß die Leute am gegenüberliegenden Ende in einer anderen Zeitzone saßen.
- Terry Pratchett in Wachen! Wachen!
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Probleme mit DateTimePicker

  Alt 16. Okt 2004, 22:19
ich würde mal auf
if time >= timer then tippen ... (falls nicht, dann poste den ganzen code )

[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
if time <= timer then 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.:
Delphi-Quellcode:
function TForm1.startcountdown(Wert: TTime): TTime;
begin
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+
    'einstellungen.ini');
Timer := now+ Wert;
und
if now <= timer then [/edit]


und wenn deine Funktion keinen Rückgabewert braucht, dann mach doch ne procedure draus, dann meckert der Compiler auch nicht
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
shAd

Registriert seit: 26. Jul 2004
Ort: Stuttgart
19 Beiträge
 
Delphi 7 Professional
 
#5

Re: Probleme mit DateTimePicker

  Alt 16. Okt 2004, 22:51
Hallo,
Ich danke dir!

Code:
if now <= timer then
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.

gruß
shAd
Er erreichte einen Speisesaal. Wenn man an dem dort stehenden langen Tisch Platz nahm, so konnte man ziemlich sicher sein, daß die Leute am gegenüberliegenden Ende in einer anderen Zeitzone saßen.
- Terry Pratchett in Wachen! Wachen!
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#6

Re: Probleme mit DateTimePicker

  Alt 16. Okt 2004, 23:12
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.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:47 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