auf Datumsänderung reagieren
Hallo Zusammen,
ich möchte auf einen Datumswechsel reagieren. Nun könnte ich natürlich einen Timer nutzen, dort das aktuelle Datum auslesen, mit einem gespeicherten Datum vergleichen und dann bei Unterschied dementsprechend reagieren. Nur gibt es vielleicht noch eine andere Möglichkeit, als ständig einen Timer laufen zu lassen? kurze Info: Der Rechner, auf dem das Programm läuft, läuft immer, bzw. ist im Standby und wird somit nicht immer runtergefahren. Somit läuft das Programm auch ständig. |
AW: auf Datumsänderung reagieren
Eventuell über die Aufgabenplanung immer 0 Uhr. Dann übernimmt Windows die Timer.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx |
AW: auf Datumsänderung reagieren
Zitat:
Der Link scheint nicht zu funktionieren |
AW: auf Datumsänderung reagieren
Hast du die vielen Kommentare hier
http://www.delphipraxis.net/148852-a...reagieren.html bereits gelesen? |
AW: auf Datumsänderung reagieren
Komisch bei mir funktioniert er. Eventuell direkter https://msdn.microsoft.com/de-de/lib.../aa383614.aspx
Du könntest ein kleines Zusatzprogramm starten, das dann eine Botschaft rüber schickt oder z.B. in einer Mutex-Verarbeitung vom Programm selbst die Botschaft schicken. |
AW: auf Datumsänderung reagieren
Zitat:
Danke dafür! |
AW: auf Datumsänderung reagieren
Schaumal bitte hier: http://www.delphipraxis.net/1332933-post2.html
|
AW: auf Datumsänderung reagieren
naphets Beispiel Code:
Zitat:
Und ein kleiner Tipp: Neben trunc kennt Delphi auch round und frac. Dann lassen sich die Millisekunden bis zum nächsten Tag auch so berechnen:
Delphi-Quellcode:
Fertig kluggeschi... :shock:
m := round((1-frac(now))*24*60*60*1000);
|
AW: auf Datumsänderung reagieren
Definiere Datumswechsel!
Im allgemeinen hat sich das Datum geändert wenn ich morgens wach werde, und irgendwann zwischen 23:59,59 und 0:01,00 ändert sich das Datum. Eine weitere Möglichkeit wäre es per Schiff oder Flugzeug die Datumsgrenze zu überschreiten. Es kommt immer auf die Betrachtungsweise an. Gruß k-H |
AW: auf Datumsänderung reagieren
Zitat:
Es ändert sich das Datum - wie auch immer Ich versteh aber deine Frage. Entweder man möchte auf Datumwechsel von Tagen reagieren oder auf Datumswechsel, die egal wie entstehen können. Nichtsdestotrotz werd ich die simpelste Variante wählen und einfach in einem Timer das Datum vergleichen. |
AW: auf Datumsänderung reagieren
Zitat:
...herausfinden, wenn die Systemzeit geändert wurde? |
AW: auf Datumsänderung reagieren
Zitat:
Nicht, wenn sich das Datum ändert, weil ein neuer Tag beginnt. |
AW: auf Datumsänderung reagieren
Gerade getestet.
Manuell, aber nicht über den Windows-Dialog. Also dasselbe wie eine automatisierte Änderung ( :?: ) :
Delphi-Quellcode:
procedure SetDateTime(Year, Month, Day, Hour, Minu, Sec, MSec: Word);
var NewDateTime: TSystemTime; begin FillChar(NewDateTime, SizeOf(NewDateTime), #0); NewDateTime.wYear := Year; NewDateTime.wMonth := Month; NewDateTime.wDay := Day; NewDateTime.wHour := Hour; NewDateTime.wMinute := Minu; NewDateTime.wSecond := Sec; NewDateTime.wMilliseconds := MSec; SetLocalTime(NewDateTime); end; SetDateTime(2017, 04, 30, 12,13,14,00); |
AW: auf Datumsänderung reagieren
Ja Helmi
die Windowsmessage WM_TIMECHANGE wird immer dann gefeuert, wenn an der Systemzeit geschraubt wird. Du kannst es auch leicht testen. Knall ein TApplicationEvents auf ein Form, wähle ApplicationEvents1.OnMessage und ergänze:
Delphi-Quellcode:
...und nun änderst du die Zeit auf deinem Compi. Dein Programm meldet sich mit "Aber Hallo".
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean); begin if Msg.message = WM_TIMECHANGE then begin ShowMessage( 'Aber Hallo' ); Handled := true; end; end; WM_TIMECHANGE hilft dir also nix. Wie erwähnt: In Extremis könntest du einen Timer mit Intervall round((1-frac(now))*24*60*60*1000) starten und würdest so benachrichtigt, wenn ein neuer Tag beginnt. Problem gelöst mit einem Einzeiler. [Wenn du dem Zeitmesser auf deiner Kiste nicht traust, dann kannst du ja häufiger checken :-D.] |
AW: auf Datumsänderung reagieren
Zitat:
Zitat:
|
AW: auf Datumsänderung reagieren
OK, ich klink mich hier mal aus :-D.
1 Ich verstehe Helmi so, dass das Programm reagieren soll, wenn ein neuer Tag beginnt. 2 Wenn Helmi jedoch darauf reagieren will, wenn jemand die Systemzeit ändert (ich glaube nicht), dann ist natürlich WM_TIMECHANGE genau richtig. Und wenn Helmi zwar nach 1 sucht und 2 dennoch einbauen möchte: Man könnte das Programm das TimerIntervall neu berechnen lassen, wenn WM_TIMECHANGE empfangen wird. Ich bin dann mal raus... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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