AGB  ·  Datenschutz  ·  Impressum  







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

auf Datumsänderung reagieren

Ein Thema von Helmi · begonnen am 23. Apr 2017 · letzter Beitrag vom 23. Apr 2017
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 10:31
Schaumal bitte hier: http://www.delphipraxis.net/1332933-post2.html
  Mit Zitat antworten Zitat
Michael II

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

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 13:06
naphets Beispiel Code:

Zitat:
// Der Rundungsfehler liegt bei +/- einer Millisekunde
...wobei man immer noch an die User vor Vista denken sollte - bei den "vor Vista OS" zeigt now nur alle 10-55Millisekunden eine neue Zeit an. (Ich weiss, es spielt bei dieser Anwendung kaum eine Rolle.)

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:
m := round((1-frac(now))*24*60*60*1000); Fertig kluggeschi...
Michael Gasser
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 13:07
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

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

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 13:26
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.
Wo ist der Unterschied?
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.
mfg
Helmi

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

Geändert von Helmi (23. Apr 2017 um 13:28 Uhr)
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#5

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 15: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.344 Beiträge
 
Delphi XE2 Professional
 
#6

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 15: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
 
#7

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 15: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 15:59 Uhr)
  Mit Zitat antworten Zitat
Michael II

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

AW: auf Datumsänderung reagieren

  Alt 23. Apr 2017, 16: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 16:12 Uhr)
  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 18:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz