![]() |
Delphi-Version: XE2
Multiples Countdownsystem mit nur einem Timer
Hallo DP!
Ich habe ein altes Delphi Programm wieder ausgegraben und wollte es etwas modernisieren. Damals gab es ca. 10 verschiedene Prozesse, welche nach Ablauf eines countdowns angestossen werden sollten. Nunja damals hatte ich einfach 10 Timer auf dem Formular...:oops: Nun jetzt ist die Anzahl an Prozessen auf 30 angewachsen und ich möchte sie weiterhin countdown-gesteuert aufrufen, jedoch mit nur einem Timer. Folgendes hab ich mir da ausgedacht: - eine Funktion ermittelt ab wann ein Prozess gestartet werden kann - ein Timer ruft die o.g. Funktion jede Sekunde pro Prozess auf
Delphi-Quellcode:
Damit könnte ich theoretisch sekundengenau alle Prozesse zum richtigen Zeitpunkt starten. Mir fällt nichts besseres ein :?
const
//Prozessname und Prozess ID server_anpingen = 1; datei_erstellen = 2; logfile_schreiben = 3; warnmeldung_ausgeben = 4; ... der_letzte_prozess = 29; //ein array fuer die startzeiten der einzelnen prozesse private { Private-Deklarationen } prozess_startzeit: array [0..30] of TDatetime; //eine funktion zum ermitteln des startzeitpunkts eines prozesses function ermittle_prozessstart(countdown: integer): TDatetime; begin //jetzt + countdown in Sekunden result := now + countdown; end; //der button zum aktivieren des countdowns. Hier wird ermittelt, wann der prozess: server_anpingen gestartet werden kann procedure TFmain.Button3Click(Sender: TObject); begin prozess_startzeit[server_anpingen] := ermittle_prozessstart(60); end; //Ein TImer startet die events wenn Startzeitpunkt erreicht procedure TFmain.timer(Sender: TObject); begin if prozess_startzeit[server_anpingen] >= now then starte_prozess(server_anpingen); if prozess_startzeit[datei_erstellen] >= now then starte_prozess(server_anpingen); if prozess_startzeit[logfile_schreiben] >= now then starte_prozess(server_anpingen); if prozess_startzeit[warnmeldung_ausgeben] >= now then starte_prozess(server_anpingen); end; ZUmal ich auch noch nicht genau weiss wie ich von now z.B. 60 Sekunden hinzuaddieren kann... |
AW: Multiples Countdownsystem mit nur einem Timer
Delphi-Quellcode:
uses dateUtils;
{$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin Caption := TimeToStr(Now) +' - ' + TimeToStr(Now + 1/24/60/60 * 60 ) + ' - ' + TimeToStr(IncSecond(now,60) ) end; |
AW: Multiples Countdownsystem mit nur einem Timer
Delphi-Quellcode:
JetztPlusEineStunde := Now + 1 / 24; // 24 Stunden pro Tag (ach was)
JetztPlusEineMinute := Now + 1 / 1440; // 1440 Minuten pro Tag JetztPlusEineSekunde := Now + 1 / 86400: // 86400 Sekunden pro Tag |
AW: Multiples Countdownsystem mit nur einem Timer
Super, damit müsste mein Plan umsetzbar sein :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 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