AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Auf Zeitpunkt überwachen

Ein Thema von DaSchwoa · begonnen am 19. Nov 2020 · letzter Beitrag vom 20. Nov 2020
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.241 Beiträge
 
Delphi 12 Athens
 
#1

AW: Auf Zeitpunkt überwachen

  Alt 20. Nov 2020, 06:45
Die Zeit in Millisekunden bis zum verlangten Zeitpunkt ausrechnen. Beim Timer das Intervall mit der berechneten Anzahl von Millisekunden belegen und den Timer aktivieren.
So würde ich das für exaktes Timing aber nie machen.
Immer nur den Timer als "Ticker" verwenden, und die Auslösezeit per TDateTime Variable festlegen.

Den "Ticker" kann ich mit der gewünschten Genauigkeit laufen lassen,
gerne auch mit variablen Intervallen
(z.B. 15 Min Intervall, wenn noch > 1 Tag Differenz, 1 Min Intervall am selben Tag).

Dann im Timer die Zeit prüfen:
Delphi-Quellcode:
procedure Timer1Timer( ... );
begin
    Timer1.Enabled := False;

    if Now >= FDateTimeAlarm then
    begin
        TueWasDuNichLassenKannst;
    end;

    Timer1.Enabled := True;
end;

So bestimme ich selbst die gewünschte Genauigkeit, auf die direkte Millisekunden verlasse ich mich nur wenn das Intervall im einstelligen Minutenbereich liegt.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#2

AW: Auf Zeitpunkt überwachen

  Alt 20. Nov 2020, 09:08
Kommt drauf an, was man machen will.

Zum Dateidownload, 'ner einmal täglichen Datenbankabfrage mit Versand des Ergebnisses per Mail und ca. alle 15 Minuten zu prüfen, ob bestimmte Server erreichbar sind, reicht meine Variante aus. Sie ist einfach, schnell implementiert und lief bisher über Jahre genau und absolut zuverlässig und resourceschonend. Mehr brauch' ich nicht. Bei der Aufgabenstellung wären auch Rundungsdifferenz in der Zeitpunktberechnung von 'ner Minute absolut unkritisch gewesen.

Ob 'ne Prüfung auf Serververfügbar nun zur exakten vollen, viertel, halben und dreiviertel Stunde läuft oder plus/minus 'ne Minute, ist hier irrelevant und 'ne Abweichung von einer Millisekunde ist absolut vernachlässigbar. Und ob die Datenbankabfrage nun jeden Morgen um 03:15 Uhr durchgeführt wird oder 'ne Minute vorher oder nachher ist auch wurscht, zumal man eh nicht kalkulieren kann, wie lange sie genau dauern wird, wieviele Mails aus dem Ergebnis entstehen und versand werden müssen.

Es ging bei meinem Vorschlag nicht um exaktes Timing (wie es für zeitkritische Aufgaben erforderlich sein kann), sondern um eine zuverlässige Regelmäßigkeit. Und die hat die implementierte Variante über Jahre hinweg bewiesen.

Achso: Das "Pollen" auf den exkten Zeitpunkt per immer wieder Abfragen, ob der Zeitpunkt erreicht ist und dabei die Zeiträume zwischen den Abfragen immer weiter verkürzen, bis der Zeitpunkt erreicht ist, war bei den ersten Experimenten in der Implementierung aufwändiger, aber letzlich nicht genauer.

Klar, wenn jemand zwischenzeitlich mal die Systemuhrzeit verstellt, bleibt das Pollen genau und meine Routine geht einmal (ggfls. um die Differenz zwischen Uhrzeit vor der Zeitumstellung und nach der Zeitumstellung) schief, aber dann passt es wieder. Und mehr Genauigkeit war nicht erforderlich.

Es kommt bei der gewählten Methode also drauf an, was man wie genau (oder ungenau) erreichen will.
  Mit Zitat antworten Zitat
Antwort Antwort

 
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 10:26 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