Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Auf Datumswechsel reagieren (https://www.delphipraxis.net/148852-auf-datumswechsel-reagieren.html)

maximus Caesar 9. Mär 2010 20:21


Auf Datumswechsel reagieren
 
Hallo zusammen.
Ich schirebe gerade ein Programm das auf den Datumswechsel reagieren soll (Also wenn sich das Datum ändert, während das Programm läuft).
Bin schon den halben Tag auf der Suche nach einer Lösung und habe bis jetzt nichts gefunden, außer WM_TIMECHANGE das aber nichts bringt, da hier nur ein manueller Wechsel berücksichtigt ist.

Kann mir jemand helfen?
Achja, Timer sollte es nicht sein...

MfG

Luckie 9. Mär 2010 20:33

Re: Auf Datumswechsel reagieren
 
Herrlich so was liebe ich. Warum schließt du die einfachste Lösung aus? Gibt es dafür einen Grund? Ohne dass dein Programm regelmäßig das Datum überprüft , wirst du einen Datumswechseln nicht mitbekommen.

Klaus01 9. Mär 2010 20:35

Re: Auf Datumswechsel reagieren
 
Guten Abend,

was spricht gegen einen Timer?
Das Intervall ist anpassbar - so kannst Du erst in einem großen
Intervall prüfen ob eine Datumswechsel ansteht (Uhrzeit) und dann
das Intervall entsprechend verkleinern.
Oder das Intervall gleich auf die Differenz 24:00 - jetzige Uhrzeit stellen.

Grüße
Klaus

Jens Hartmann 9. Mär 2010 20:36

Re: Auf Datumswechsel reagieren
 
Hallo,

aber wie willst Du es dann ohne Timer realisieren. Irgendeine Komponente muss dir ja die arbeit abnehmen und prüfen ob das Datum noch aktuell ist.

Wenn Du es beim Programmstart durchführen willst, dann könntest Du das ja über den Timer.Interval lösen. In etwa so könnte es dann gehen.

Timer.Interval

Du legst beim Start den Interval bis zum nächsten Datumswechsel (24:00:00 Uhr) fest. Dann im TimerOn Ereignis den Interval auf 24 Stunden später.
Allerdings musst Du den Fehler im Timer berücksichtigen, der wird mit der Zeit aus dem Datumswechsel laufen. Daher vieleicht immer im TimerOn Ereignis neu mit

Delphi-Quellcode:
      SendEMailTimer1.Interval := MilliSecondsBetween(frac(StrToTime(TimeNow)),
        frac(StrToTime(TimeSend)));
initialisieren.


Gruß Jens

Valle 9. Mär 2010 20:44

Re: Auf Datumswechsel reagieren
 
Zitat:

Zitat von Luckie
Herrlich so was liebe ich. Warum schließt du die einfachste Lösung aus? Gibt es dafür einen Grund? Ohne dass dein Programm regelmäßig das Datum überprüft , wirst du einen Datumswechseln nicht mitbekommen.

Weil man Polling wenn möglich vermeiden sollte. Und vor allem wenn es ja eventuell (Und das ist seine Frage) eine Möglichkeit gibt, ein Callback oder Ähnliches bereitzustellen. Da muss man nicht gleich abfällig werden. Ich finde es gut, wenn sich jemand Gedanken darum macht, auf unschöne Programmier-Methoden zu verzichten. Dass es um das Polling dabei leider nicht drumrum kommt, konnte er ja nicht wissen. :roll:

Edit:// Achja, um noch was Produktives beizutragen: Ich würde in diesem Fall eher zum Polling als zu einem u.U. sehr hohen Timer-Intervall raten. Ich weiß nicht, wie Windows die Timer intern behandelt, aber ich fürchte, dass die Differenz zum echten Datumswechsel teilweise sehr hoch werden kann. (z.B. wenn der Rechner mal kurz vor dem Absturz steht) Ansonsten stellt sich eben die Frage, wie genau du auf den Datumswechsel reagieren möchtest. :-)

Liebe Grüße,
Valle

Luckie 9. Mär 2010 20:46

Re: Auf Datumswechsel reagieren
 
Das ist ja auch in Ordnung. Was mich nur stört ist, dass so was immer ohne Begründung da steht.

Jens Hartmann 9. Mär 2010 21:00

Re: Auf Datumswechsel reagieren
 
Zitat:

Zitat von Valle
Ich würde in diesem Fall eher zum Polling als zu einem u.U. sehr hohen Timer-Intervall raten.

Da stimme ich Dir natürlich zu. Je nach Genauigkeit des Interval, ist eine Polling aufjedenfall besser. Allerdings natürlich auch aufwendiger.

Und wenn es mir nicht auf die Sekunde genau ankommt, kann ich ja den Interval, kurz nach dem Datumswechsel neu berechnen lassen. Somit ist zumindestens gewährleistet, das ich nicht komplett aus dem Zyklus laufe. Und je nach Anwendung ist es ja auch egal, ob es 00:00:00 oder 00:00:35 ist, oder halt auch 00:01:12.

Gruß Jens

maximus Caesar 9. Mär 2010 22:06

Re: Auf Datumswechsel reagieren
 
Zitat:

Zitat von Luckie
Das ist ja auch in Ordnung. Was mich nur stört ist, dass so was immer ohne Begründung da steht.

Jup, hätt ich dazu schreiben sollen.
Gibts denn eine Quelle zu dem "Polling", finde leider nichts.
Die Genauigkeit ist nicht so wichtig, mir kommts eher auf die Prozessor und Akku Belastung an.
Und schonmal vielen Dank für die guten Antworten!

Valle 9. Mär 2010 22:11

Re: Auf Datumswechsel reagieren
 
Zitat:

Zitat von maximus Caesar
Gibts denn eine Quelle zu dem "Polling", finde leider nichts.

Polling bedeutet, eine bestimmte Information in regelmäßigen Abstand abzufragen. Wenn du alle 3 Minuten schaust, ob sich das Datum geändert hat oder ob du eine neue E-Mail bekommen hast, dann ist das Polling. Wenn du per SMS über eine E-Mail informiert wirst, oder ein Callback für den Datumswechsel registrierst, dann ist das kein Polling.

Polling sollte man nach Möglichkeit vermeiden. Bei einfachen Sachen wie Datumswechsel ist das nicht weiter tragisch, aber beim zeitempfindlichen Anwendungen oder auch kostenintensiven Sachen (zB. E-Mail mit dem Handy holen) ist das schon wichtiger. Du hast ja offensichtlich schon aus dem Bauch heraus alles richtig machen wollen. :-)

Liebe Grüße,
Valle

maximus Caesar 9. Mär 2010 22:14

Re: Auf Datumswechsel reagieren
 
Danke!
Kannte dafür nur den Begriff noch nicht :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.
Seite 1 von 3  1 23      

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