AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)?
Thema durchsuchen
Ansicht
Themen-Optionen

gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)?

Ein Thema von DerDan · begonnen am 20. Nov 2008 · letzter Beitrag vom 25. Nov 2008
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#31

Re: gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)

  Alt 22. Nov 2008, 10:55
Zitat von Macci:
Hi,

klar kannst du Windows dazu veranlassen, deinem Programm jede Sekunde eine Message zu schicken.

Das Zauberwort heisst "SetTimer". Du erhältst dann Messages des Typs WM_TIMER von Windows. (Nicht zu verwechseln mit dem Timer-Steuerelement von Delphi).
Ähh .. natürlich nicht zu verwechseln ... denn es ist ja das gleiche in Grün, nur einmal als Klasse gekapselt und einmal nicht

Außerdem sorgt der Timer ja nicht (wie gewünscht) dass bei jedem Sekundenwechsel eine Message gesendet wird, sondern nur sekündlich. Bei letzerem bleibt eben immer ein Offset von bis zu knapp unter einer Sekunde
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#32

Re: gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)

  Alt 22. Nov 2008, 15:34
Zitat von jfheins:
Außerdem sorgt der Timer ja nicht (wie gewünscht) dass bei jedem Sekundenwechsel eine Message gesendet wird, sondern nur sekündlich. Bei letzerem bleibt eben immer ein Offset von bis zu knapp unter einer Sekunde
Hmm okay.. am besten wäre es dann wohl, einen Timer mit einem kurzen Zeitintervall zu starten (z.B. 10 ms) und sich die letzte Uhrzeit immer zu merken. Auf diese Weise wäre die Verzögerung weniger als 1/100-Sekunde, und somit von keinem Menschen bemerkbar. Über Performace bräuchtest du dir da auch keine Gedanken machen, denn 100 Messages pro Sekunde entsprechen einer CPU-Last von 0,0% (gerundet)

Viele Gruesse,
Macci
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#33

Re: gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)

  Alt 22. Nov 2008, 16:13
Zitat von Macci:
Zitat von jfheins:
Außerdem sorgt der Timer ja nicht (wie gewünscht) dass bei jedem Sekundenwechsel eine Message gesendet wird, sondern nur sekündlich. Bei letzerem bleibt eben immer ein Offset von bis zu knapp unter einer Sekunde
Hmm okay.. am besten wäre es dann wohl, einen Timer mit einem kurzen Zeitintervall zu starten (z.B. 10 ms) und sich die letzte Uhrzeit immer zu merken. Auf diese Weise wäre die Verzögerung weniger als 1/100-Sekunde, und somit von keinem Menschen bemerkbar. Über Performace bräuchtest du dir da auch keine Gedanken machen, denn 100 Messages pro Sekunde entsprechen einer CPU-Last von 0,0% (gerundet)

Viele Gruesse,
Macci
Wobei ich dann fast wieder bei meiner Lösung bin. Beitrag 23

Vielen Dank
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#34

Re: gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)

  Alt 25. Nov 2008, 12:25
nochmal kurz zu
Zitat von Macci:
(Nicht zu verwechseln mit dem Timer-Steuerelement von Delphi)
Code:
procedure TTimer.UpdateTimer;
begin
  [b]KillTimer[/b](FWindowHandle, 1);
  if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then
    if [b]SetTimer[/b](FWindowHandle, 1, FInterval, nil) = 0 then
      raise EOutOfResources.Create(SNoTimers);
end;
Ja und es wird nicht jede Sekunde das Event ausgelöst ... wenn dein Programm z.B. 10 Sekunden lang seine Nachrichten (Messages) nicht bearbeitet, dann sind nicht (wie man vielleicht denken könnte) auch 10 Timer-Nachrichten in der Liste, sondern nur eine.

Auserdem arbeitet Windows ja nicht genau und es kommt nicht aller "genau" 'ner Sekunde ein Ereignis rein (wenn windows oder ein Programm aus-/überlastet ist, dann kann es auch mal verspätet eintreffen)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#35

Re: gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)

  Alt 25. Nov 2008, 12:49
Also ich wäre ja bei folgender Überlegung stutzig geworden:
Zitat von DerDan:
Wenn man sich nun die analoge Uhr anschaut, die bei Windows mitgeliefert wird, dann fällt dort auf das der Sekundenzeiger nicht genau jede Sekunde weiterwandert. manchmal "hängt" der Zeige eine kurze Weile.
-> Einfach mal eine Weile beobachten.
Dann hätte ich mir gedacht, dass, wenn Microsoft keine sekundengenaue Uhr in seine GUI: Windows einbaut, dann wird es wohl tief im Inneren von Windows auch keine dementsprechende Möglichkeit (oder Message) geben.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#36

Re: gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)

  Alt 25. Nov 2008, 12:58
Zitat von sirius:
Dann hätte ich mir gedacht, dass, wenn Microsoft keine sekundengenaue Uhr in seine GUI: Windows einbaut, dann wird es wohl tief im Inneren von Windows auch keine dementsprechende Möglichkeit (oder Message) geben.
Das hängt aber auch noch damit zusammen, daß der Prozess, welcher unter Anderem die Uhr zeichnet,
mit einer geringen Prozesspriorität läuft, da sie ja anderen Programmen nicht viel Rechnenleistung klauen soll ... somit bleibt sie auch schonmal Minutenlang stehen, wenn der PC ausgelastet ist.

Mit einer hohen Prozess-/Threadpriorität und einem HighRessolutionTimer (Bei Google suchenMultimediatimer/Hier im Forum suchenMultimediatimer) könnte man zwar genauer Arbeiten und die Uhr "besser/genauer" darstellen, aber das wär' dann wie mit Kanonen auf Spatzen schießen.
$2B or not $2B
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#37

Re: gibt es eine Message bei Uhrzeit Änderung (jede Sekunde)

  Alt 25. Nov 2008, 15:55
Zitat von himitsu:
Ja und es wird nicht jede Sekunde das Event ausgelöst ... wenn dein Programm z.B. 10 Sekunden lang seine Nachrichten (Messages) nicht bearbeitet, dann sind nicht (wie man vielleicht denken könnte) auch 10 Timer-Nachrichten in der Liste, sondern nur eine.
Japp, genau deswegen darf man das Timersteuerelement nicht mit den entsprechenden Windows API Funktionen verwechseln. Ich habe deswegen auch auf die APIs hingewiesen, weil @DerDan ausdrücklich MESSAGES wollte.

Viele Grüsse,
Macci
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 15:24 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