AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Immer wiederkehrende Aufgaben realisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Immer wiederkehrende Aufgaben realisieren

Ein Thema von RWarnecke · begonnen am 29. Jul 2008 · letzter Beitrag vom 7. Aug 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 08:48
Ich habe folgendes Problem, ich muss drei Aufgaben zu unterschiedlichen Zeiten ausführen. Im Moment realisiere ich es über die Komponente TTimer. Es funktioniert, nur leider nicht im Dauerbetrieb. Wie könnte ich es denn noch realisieren ? Gibt es dazu Befehle oder Komponenten, die genauer sind als TTimer ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 09:35
Moin, Moin,
du schreibst, dass es funktioniert, aber nicht im Dauerbetrieb?! Könntest du das konkretisieren...
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 09:48
Es wird zum Beispiel ein Popupfenster alle x Sekunden oder Minuten angezeigt. Dieses kann variabel eingestellt werden. Wenn ich das Programm nur für maximal eine Stunde laufen lasse, funktioniert es. Geht es aber über die eine Stunde hinaus, dann werden die Popupfenster nichtmehr in dem Rythmus angezeigt, so wie ich es eingestellt habe.

Zur Erklärung: Wenn das Programm ins Tray gesetzt wird, werden die Timer aktiviert und wenn ich es wieder aus dem Tray hole, dann werden die Timer deaktiviert.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 10:07
Hmmm,
die Timer-Funktionalität wird also nur genutzt, wenn das Programm ins Tray gesetzt ist - sonst nicht?! Nach einer Stunde ändern sich die Intervalle?
Hilft es vielleicht, wenn du mit jeder Deaktivierung des Programms den Timerintervall neu setzt? Aber das wäre irgendwie ein "herumdoktern am Symptom" - seltsam
Ralph
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 10:42
Meine Glaskugel sagt, du hast das Stoppuhr-Problem:

Wenn man so eine Stoppuhr programmiert, wird sie nicht wirklich funktionieren:
Delphi-Quellcode:
// Pseudocode:
OnTimer(Intervall := 1000ms)
begin
  Stoppzeit := Stoppzeit -1s;
end;
Warum: So genau ist Timer nicht(Multitasking und MessageLoop sind dafür verantwortlich). Die Fehler summieren sich mit der Zeit auf. Ist das Intervall größer, dauert es eben länger, bis das Problem auftritt.

Lösung für die Stoppuhr:
Delphi-Quellcode:
// Pseudocode:
OnTimer(Intervall := 1000ms)
begin
  Stoppzeit := (AltesGetTickCount - GetTickCount) div 1000(ms/s);
end;
Dann klapps auch mit dem Nachbarn.... äh... der Stoppuhr.

Ich vermute dein Problem ist durch den selben Effekt begründet. Sie Lösung sollte dann entsprechend auch ähnlich aussehen...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#6

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 10:57
Interessant, aaaaber ...
Wenn ich die Aufgabe des Timers in diesem speziellen Fall richtig interpretiere, gehe ich davon aus, dass keine besondere Genauigkeit notwendig ist. Ob ein Fenster 100ms früher oder später erscheint, ist vermutlich irrelevant.
Problematisch ist natürlich, wenn auf das Erreichen eines exakten Intervallwerts geprüft wird. Ist die Lösung dann nicht eine Prüfung auf "Ist-Interval >= Soll-Popup-Intervall"?
Ralph
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#7

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 11:04
Zitat von taaktaak:
Wenn ich die Aufgabe des Timers in diesem speziellen Fall richtig interpretiere, gehe ich davon aus, dass keine besondere Genauigkeit notwendig ist. Ob ein Fenster 100ms früher oder später erscheint, ist vermutlich irrelevant.
Jo, aber 3600 mal 100ms sind dann doch schon relevant oder? Das is jetzt n Extremfall, klar. Ein Teil der Zeitdifferenz wird sich vermutlich auch wieder wegheben, abver das problem ist da. Wenn es im durchschnitt 10ms sind, sind das 36s pro Stunde und das kann schon signifikant sein...

Zitat:
Ist die Lösung dann nicht eine Prüfung auf "Ist-Interval >= Soll-Popup-Intervall"?
Also sofern ich mich nicht vertan habe, ist mein Code eine Lösung für das Stopp-Uhr-Problem. Was nun im konkreten Fall die Lösung ist, kann cih nicht genau sagen. Daszu hab ich zu wenig Infos. Ich wollte ja auch nur einen Denkansatz liefern. So oder so ähnlich könnte eine Lösung aussehen...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#8

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 11:21
Uuuups, natürlich!
Die Ungenauigkeit der TimerIntervalle addiert sich, na klar! Also kann der Aufruf des Timers nur dazu dienen, die Systemzeiten zu vergleichen - die Timerintervalle selbst können nicht zur Berechnung der Zeitdifferenz benutzt werden.
Bei Initialisierung des Timers und Aufruf des Popups wird mit GetTickCount() der Beginn eines neuen Zeitintervalles gesetzt und bei jedem erneutem Timeraufruf mit dem aktuellen Wert von GetTickCount() verglichen. Wenn die definierte Zeitdifferenz erreicht oder überschritten ist, beginnt alles von vorn. Ja, ich denke, das ist die Lösung.
Ralph
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#9

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 11:34
Wichtig ist dabei, dass man den Referenzwert von GetTickCount nicht andauernd ändert, sonst hat man wieder das gleiche Problem(vielelicht nach 2h, aber das Problem besteht immer noch). Also diesen Referenzwert genau dann setzen, wenn Timer.Enabled auf true gesetzt wird(so, wie ich das verstanden hab, wenn die Anwendung in die TNA verbannt wird), nicht bei jedem Tick...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#10

Re: Immer wiederkehrende Aufgaben realisieren

  Alt 29. Jul 2008, 11:54
Hmmm, nicht bei jedem Tick - aber doch wohl bei jedem erfolgten Aufruf des Popup-Fensters. Wenn der Referenzwert nur bei Aktivierung des Timers gesetzt wird, musst du doch unnötig rechnen - oder?
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 06:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz