AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

auf Datumsänderung reagieren

Ein Thema von Helmi · begonnen am 23. Apr 2017 · letzter Beitrag vom 23. Apr 2017
Antwort Antwort
Seite 2 von 2     12
a.def
(Gast)

n/a Beiträge
 
#11

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 16:39
Zitat:
Nichtsdestotrotz werd ich die simpelste Variante wählen und einfach in einem Timer das Datum vergleichen.
Das hier ist noch simpler und funktioniert mit automatisierten und manuellen Zeitänderungen:
...herausfinden, wenn die Systemzeit geändert wurde?
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

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

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 16:49
Zitat:
Nichtsdestotrotz werd ich die simpelste Variante wählen und einfach in einem Timer das Datum vergleichen.
Das hier ist noch simpler und funktioniert mit automatisierten und manuellen Zeitänderungen:
...herausfinden, wenn die Systemzeit geändert wurde?
Aber so wie ich das verstehe, nur, wenn man die Systemzeit ändert (z. B. manuell im Dialog).
Nicht, wenn sich das Datum ändert, weil ein neuer Tag beginnt.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#13

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 16:57
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);

Geändert von a.def (23. Apr 2017 um 16:59 Uhr)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
703 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 17:09
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:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message = WM_TIMECHANGE then
  begin
    ShowMessage( 'Aber Hallo' );
    Handled := true;
  end;
end;
...und nun änderst du die Zeit auf deinem Compi. Dein Programm meldet sich mit "Aber Hallo".

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 .]
Michael Gasser

Geändert von Michael II (23. Apr 2017 um 17:12 Uhr)
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#15

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 17:12
Zitat:
ich möchte auf einen Datumswechsel reagieren.
Zitat:
WM_TIMECHANGE hilft dir also nix.
Wieso das? WM_TIMECHANGE macht doch genau das was er will?
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
703 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 17:34
OK, ich klink mich hier mal aus .

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...
Michael Gasser
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:45 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