AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DateTimePicker: zu einer gewissen Uhrzeit Funktion ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

DateTimePicker: zu einer gewissen Uhrzeit Funktion ausführen

Ein Thema von Helmi · begonnen am 2. Jul 2007 · letzter Beitrag vom 6. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

DateTimePicker: zu einer gewissen Uhrzeit Funktion ausführen

  Alt 2. Jul 2007, 17:49
Hallo,

ich hätt da mal ne Frage:

Ich möchte zu einer Gewissen Uhrzeit etwas durchführen.

Bisher mach ich das so:
Delphi-Quellcode:
procedure TMainForm.Timer_UhrzeitTimer(Sender: TObject);
begin
  //prüfen ob Uhrzeit in Ordnung
  If TimeToStr(now) = TimeToStr(DateTimePicker_Uhr.Time) then
    begin
      //Timer disablen
      Timer_Uhrzeit.Enabled := false;

      //Procedure "Updaten" starten
      Updaten;

      //Timer enablen
      Timer_Uhrzeit.Enabled := true;
    end;
end;
Was mir daran nicht gefällt ist die Konvertierung in einen String.

Ich dachte mir, es müsse ja so auch gehen:
  If now = DateTimePicker_Uhr.Time then Nur leider wird so nie etwas ausgeführt.

Das:
  If now >= DateTimePicker_Uhr.Time then kann ich leider nicht nehmen, da ja nur zu einer Gewissen Uhrzeit etwas ausgeführt werden soll, nicht einem Gewissen Zeitraum.

Wie kann ich das auf Uhrzeit-Ebene prüfen?
Oder soll ich bei den Strings bleiben?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#2

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 2. Jul 2007, 17:53
Das Problem ist, dass die Uhrzeit ein Fließkommawert ist. Und Fließkommawerte lassen sich schlecht vergleichen.
Du müsstest die Uhrzeiten (also die Nachkommawerte) voneinander abziehen und prüfen, ob diese unterhalb einer gewissen Unschräftegrenze (z.B. 0,0001) liegen. Damit bist Du dann nah dran. Wenn die Auflösung des Timers dann so groß ist, dass Du genau einmal pro Tag in die Unschärfegrenze kommst passt das.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 2. Jul 2007, 17:54
Du mußt beide Werte Runden, so daß der Vergleich funktioniert
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#4

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 2. Jul 2007, 17:55
mmh

ich dachte das ginge einfacher.

Da bleib ich ja lieber bei der String-Konvertierung - die funktioniert wenigstens
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 2. Jul 2007, 17:56
das Runden sollte doch auch kein Problem sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#6

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 2. Jul 2007, 18:01
Zitat von mkinzler:
das Runden sollte doch auch kein Problem sein.
Wahrscheinlich mach ich nen Fehler - aber so gehts nicht:
  If Round(now) = Round(DateTimePicker_Uhr.Time) then
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 2. Jul 2007, 18:59
Delphi-Quellcode:
procedure TMainForm.Timer_UhrzeitTimer(Sender: TObject);
var
  jetzt, bis : TDateTime;
begin
  jetzt := Time;
  // jetzt noch die Intervalzeit (in ms) umrechnen in Tage
  // und zur aktuellen Zeit addieren
  bis := jetzt + Timer_Uhrzeit.Interval / MSecsPerDay;

  //prüfen ob Uhrzeit im gültigen Bereich
  if (DateTimePicker_Uhr.Time >= jetzt) and (DateTimePicker_Uhr.Time<= bis) then
    begin
      //Timer disablen
      Timer_Uhrzeit.Enabled := false;
      try
        //Procedure "Updaten" starten
        Updaten;
      finally // <== sicherstellen, dass der Timer auch bei Fehler weiterläuft
        //Timer enablen
        Timer_Uhrzeit.Enabled := true;
      end;
    end;
end;
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 2. Jul 2007, 19:03
Hallo,

auch mit der Funktion DateUtils.SecondsBetween() lässt sich ein Time Slot testen:

Delphi-Quellcode:
const
  DELTA_SECONDS = 1; // 0 entspräche dem String-Ansatz
begin
  if (Now >= DTP.DateTime)
  and (DateUtils.SecondsBetween(Now, DTP.DateTime) <= DELTA_SECONDS) then
  begin
    { ... };
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#9

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 3. Jul 2007, 09:35
Zitat von Helmi:
Wahrscheinlich mach ich nen Fehler - aber so gehts nicht:
  If Round(now) = Round(DateTimePicker_Uhr.Time) then
Das liegt daran, das ein TDateTime im ganzzahligen Anteil Tage und im Nachkommaanteil die Zeit hat. Wenn Du nun ein round(Now) durchführst, dann bekommst Du nur Tage. Der Zeitanteil in Deinem TDateTime ist dann 0. Verglichen mit der Zeit in Deinem DateTimePicker, dem du die Tage von vorneherein weggenommen hast (DateTimePicker.Time) ist dann natürlich niemals eine Übereinstimmung möglich. Schau Dir in der Hilfe mal die Eigenschaften von TDateTime an.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#10

Re: DateTimePicker: zu einer gewissen Uhrzeit Funktion ausfü

  Alt 3. Jul 2007, 17:00
mmh

also wenn ich mir das alles so anschaue, find ich meine String-Variante am Einfachsten.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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 07:28 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