Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#25

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

  Alt 21. Nov 2008, 11:46
Hallo,
Zitat von SirThornberry:
Ohne pollen geht es definitiv nicht, also einfach einen recht kleinen Interval nehmen.
Wie bereits gesagt wurde: Selbst wenn es eine Message geben würde, wäre es auch ein Pollen weil die Nachrichten ja per Polling abgeholt werden.
wieso nicht?

Ein paar Konstanten für definierte Zeiträume
Delphi-Quellcode:
const
  iOneSecond : Integer = 1000; // eine Sekunde in Millisekunden
  iOneMinute : Integer = 60000; // eine Minute in Millisekunden
  iFiveMinutes : Integer = 300000; // Fünf Minuten in Millisekunden
  iFifteenMinutes : Integer = 900000; // Fünfzehn Minuten in Millisekunden
  iOneHour : Integer = 3600000; // Eine Stunde in Millisekunden
  iOneDay : Integer = 86400000; // Ein Tag in Millisekunden
Eine Funktion zum Berechnen der Zeitdifferenz bis zum nächsten Timerereignis.
Hier wird der Wert berechnet, der Interval zuzuweisen ist, bevor der Timer eingeschaltet wird.
iTimerInterval kann einer der obigen Konstanten Werte sein oder was, was man selbst berechnet.
Delphi-Quellcode:
function CalcTimerInterval(iTimerInterval : Integer) : Integer;
Var
          dNow : Double;
begin
  // Interval setzen
  // Tagesdatum und Uhrzeit holen
  dNow := Now;
  // Den Tagesanteil holen (= Nachkommastellen).
  dNow := dNow - Trunc(dNow);
  // Rest bis Mitternacht holen.
  dNow := 1 - dNow;
  // Nachkommastellen mal Millisekunden pro Tag
  Result := Trunc(dNow * iOneDay);
  // wir benötigen den Rest bis zum angegeben Interval, damit der Timer
  // zur nächsten Minute, Stunde, 0 Uhr ... aktive wird.
  Result := (Result mod iTimerInterval);
end;
Uhrzeit lesen und Millisekunden bis zur nächsten vollen Sekunde berechnen, kann doch garnicht so schwer sein?
Delphi-Quellcode:
Timer.Enabled := False;
// Schiebe Zeiger eine Position weiter:
Timer.Interval := CalcTimerInterval(iOneSecond);
Timer.Enabled := True;
  Mit Zitat antworten Zitat