AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Multiples Countdownsystem mit nur einem Timer

Multiples Countdownsystem mit nur einem Timer

Ein Thema von Ajintaro · begonnen am 23. Apr 2012 · letzter Beitrag vom 23. Apr 2012
Antwort Antwort
Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#1

Multiples Countdownsystem mit nur einem Timer

  Alt 23. Apr 2012, 15:56
Delphi-Version: XE2
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...

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:
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;
Damit könnte ich theoretisch sekundengenau alle Prozesse zum richtigen Zeitpunkt starten. Mir fällt nichts besseres ein
ZUmal ich auch noch nicht genau weiss wie ich von now z.B. 60 Sekunden hinzuaddieren kann...
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Multiples Countdownsystem mit nur einem Timer

  Alt 23. Apr 2012, 16:17
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#3

AW: Multiples Countdownsystem mit nur einem Timer

  Alt 23. Apr 2012, 16:20
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
  Mit Zitat antworten Zitat
Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#4

AW: Multiples Countdownsystem mit nur einem Timer

  Alt 23. Apr 2012, 16:22
Super, damit müsste mein Plan umsetzbar sein
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat
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 09:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf