| Autor |
Beitrag |
Aurum
Hält's aus hier
Beiträge: 5
|
Verfasst: Mo 16.03.09 20:05
Hallo Leute
Wenn ich einen Wecker mache der z.B. um 07:50 Uhr Alarm gibt, wie muss ich dies machen?
Muss ich einen TTimer verwenden der jede Sekunde prüft ob es jetzt 07:50 ist und wenn es zutrift dann schlage ich Alarm?
Oder gibt es eine elegantere Lösung?
Gruss
Aurum
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mo 16.03.09 20:09
Du könntest die Differenz zwischen der aktuellen Zeit und der gewünschten Weckzeit berechnen und diese dem Timer zuweisen. Da der aber sehr ungenau arbeitet, würde ich erst etwas von der Zeit abziehen, und im Timer-Event noch so lange warten, bis auch wirklich der Wecker klingeln soll. (ggf. einfach den Intervall des Timers auf 1000 setzen).
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: Mo 16.03.09 22:28
Aurum hat folgendes geschrieben : | Hallo Leute
Wenn ich einen Wecker mache der z.B. um 07:50 Uhr Alarm gibt, wie muss ich dies machen?
Muss ich einen TTimer verwenden der jede Sekunde prüft ob es jetzt 07:50 ist und wenn es zutrift dann schlage ich Alarm?
Oder gibt es eine elegantere Lösung?
Gruss
Aurum |
Hi,
du kannst den Scheduler des Betriebssystems beauftragen (linux cron, Windows at), aber der macht ja auch nichts anderes. Ausserdem, wie schon vorgeschlagen, kannst du ein längeres Intervall nehmen, wenn der Zeitpunkt noch entfernt ist, aber ein Event/Sekunde fällt kaum ins Gewicht, daher lohnt sich das nicht wirklich. Wenn du mit einem Abfrageintervall von 1 bis 10 Sekunden hinkommst, würde ich es beim Polling belassen.
Gruss Reinhard
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mo 16.03.09 22:29
Yogu hat folgendes geschrieben : | | Du könntest die Differenz zwischen der aktuellen Zeit und der gewünschten Weckzeit berechnen und diese dem Timer zuweisen. Da der aber sehr ungenau arbeitet |
Meines wissens arbeitet der nur bei der kleinen Intervallen ungenau, jaenicke hat glaube ich den Test gemacht und ist auf Ungenauigkeit ab 15 ms abwärts gekommen.
Eine Möglichkeit steht in den FAQ...: www.delphi-library.d...&highlight=delay
Was genau das tut, steht im Beitrag, ob's besser ist als ein Timer ... 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Aurum 
Hält's aus hier
Beiträge: 5
|
Verfasst: Mo 16.03.09 23:18
Danke für eure Tipps. Ich werde weiterhin alle Sekunde pollen.
Gruss
Aurum
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 17.03.09 09:42
Aurum hat folgendes geschrieben : | Danke für eure Tipps. Ich werde weiterhin alle Sekunde pollen.
Gruss
Aurum |
Wenn nur HH:MM interessieren, macht es keinen Sinn, jede Sekunde zu pollen, es reicht dann, 1x/Minute die Zeit zu vergleichen.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 17.03.09 18:08
hathor hat folgendes geschrieben : | Aurum hat folgendes geschrieben : | Danke für eure Tipps. Ich werde weiterhin alle Sekunde pollen.
Gruss
Aurum |
Wenn nur HH:MM interessieren, macht es keinen Sinn, jede Sekunde zu pollen, es reicht dann, 1x/Minute die Zeit zu vergleichen. |
Es macht in sofern Sinn, dass der User vielleicht auf die Sekunde genau um diese Uhrzeit ge weckt werden will. Ich denke, ein normaler "Aufsteh"-Wecker (  ) macht am PC wenig Sinn, also wird es wohl eher etwas anderes sein. Und da kommt es manchmal schon auf die Sekunde an.
Deshalb mein Tipp: Etwa eine Minute vorher das Intervall hinuntersetzten. Dass ist gesichert, dass die Genauigkeit stimmt.
|
|
sky21
      
Beiträge: 141
W7
D2010, XE2
|
Verfasst: Mi 18.03.09 09:31
Man kann die Invervallzeit auch dynamisch verändern.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mi 18.03.09 19:29
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Mi 18.03.09 22:11
Also wenn es wirklich nur darum geht, möglichst wenige Timer-Abfragen für die Behandlung _eines_ konkreten Termins zu nutzen, dann könnte man ja errechnen, wie lange es noch bis zu dem Termin dauert und davon die Hälfte als Timer-Intervall angeben.
Dafür müsste man aber bei jeder Timer-Abfrage diese Errechnung wieder neu durchführen.
Oder man könnte ja auch direkt den MS-Abstand zum Termin berechnen mit dem, wie es in Thema
[Link="2 Fragen (Datum, Ereignis das immer auftrit)" URL= www.delphi-forum.de/...highlight=tageszeit]
gemacht wird, und den Wert als Timer-Intervall angeben.
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Mi 18.03.09 23:52
ffgorcky hat folgendes geschrieben : | Also wenn es wirklich nur darum geht, möglichst wenige Timer-Abfragen für die Behandlung _eines_ konkreten Termins zu nutzen, dann könnte man ja errechnen, wie lange es noch bis zu dem Termin dauert und davon die Hälfte als Timer-Intervall angeben.
Dafür müsste man aber bei jeder Timer-Abfrage diese Errechnung wieder neu durchführen.
|
Dann würde das ereignis aber nie eintreten^^
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Do 19.03.09 08:38
_________________ Na denn, dann. Bis dann, denn.
|
|