Hallo,
in meinem Programm möchte ich jeden Tag um 14 Uhr 15 eine Aktion auslösen. Da es dabei auf ein paar Minuten mehr oder weniger nicht ankommt, habe ich einen IdlTimer laufen, der alle 5 Minuten nachschaut, ob es schon 14 Uhr 15 ist. Das funktioniert jetzt auch ganz gut, aber irgendwie habe ich das Gefühl, ein Programmierprofi würde das anders lösen. Aber wie?
jeden Tag um 14 Uhr 15
-
- Beiträge: 565
- Registriert: So 26. Aug 2012, 09:03
- OS, Lazarus, FPC: Windows(10), Linux(Arch)
- CPU-Target: 64Bit
Re: jeden Tag um 14 Uhr 15
Wenn das Programm dazwischen nicht laufen muss würde ich das über (je nach OS) Cron-jobs oder die Windows Aufgabenverwaltung lösen.
http://www.netzwelt.de/news/88194-schri ... ows-7.html
Wenn doch, würde ich das auch nicht anders machen.
MFG
Komoluna
http://www.netzwelt.de/news/88194-schri ... ows-7.html
Wenn doch, würde ich das auch nicht anders machen.
MFG
Komoluna
Programmer: A device to convert coffee into software.
Rekursion: siehe Rekursion.
Rekursion: siehe Rekursion.
-
- Beiträge: 38
- Registriert: Di 18. Nov 2014, 22:50
- OS, Lazarus, FPC: Windows 7 [x64]; Lazarus 1.6.4 [i386-win32]; FPC 3.0.2 [win32 i386]
- CPU-Target: 64Bit
Re: jeden Tag um 14 Uhr 15
Hallo Andromeda,
bin zwar kein Profi, aber so ginge es zum Beispiel:
Variable AlertTime definieren:
(Normalen) Timer mit z.B. 50 Sekunden Intervall auf´s Formular knallen...
In das OnTimer-Event sowas in der Art rein schreiben:
Und fertig 
Aber beachte das der Timer-Intervall auf jeden Fall unter einer Minute liegen muss!
Du könntest auch noch einen zweiten Timer einbauen, der den ersten Timer nach 60 Sekunden wieder aktiviert... Dann könnte die Anwendung auch mehr als einmal "Alarm" auslösen.
Allerdings ist diese Lösung wirklich Quick&Dirty, aber besser als nichts
bin zwar kein Profi, aber so ginge es zum Beispiel:
Variable AlertTime definieren:
Code: Alles auswählen
var
AlertTime: String='14:15';
In das OnTimer-Event sowas in der Art rein schreiben:
Code: Alles auswählen
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if FormatDateTime('hh:nn',Now)=AlertTime then
begin
Timer1.Enabled:=False; // Damit nur eine Nachricht angezeigt wird.
ShowMessage('ALERT!');
end;
end;

Aber beachte das der Timer-Intervall auf jeden Fall unter einer Minute liegen muss!
Du könntest auch noch einen zweiten Timer einbauen, der den ersten Timer nach 60 Sekunden wieder aktiviert... Dann könnte die Anwendung auch mehr als einmal "Alarm" auslösen.
Allerdings ist diese Lösung wirklich Quick&Dirty, aber besser als nichts

-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: jeden Tag um 14 Uhr 15
Ich würde beim Eintreten des Timerevents den Interval des Timers verändern (anhand der Uhrzeit berechnen), so dass er erst wieder um 14:15Uhr einen Event auslöst.
.