Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zeitliche Abfolge erstellen (https://www.delphipraxis.net/82631-zeitliche-abfolge-erstellen.html)

Delphi-Coder 16. Dez 2006 22:17


Zeitliche Abfolge erstellen
 
Hallo,

ich habe mal eine prinzipielle Frage: Ich hab 5 (oder mehr) Elemente mit den Namen A,B,C,D und E. Jedes Element soll entweder alle 5, 10, 15, 20, 30 oder 60 Minuten angezeigt werden. Dies ist für jedes Element unterschiedlich und frei vom benutzer wählbar.

Außerdem kann der Benutzer auch entscheiden, wie lange jedes Element eingeblendet werden soll. Zum Beispiel: Element A soll alle 15 Minuten für 30 Sek eingeblendet werden; Element B soll alle 10 Minuten für 60 Sekunden eingeblendet werden.

Um dabei auftretende zeitliche Leerräume aufzufüllen gibt es noch eine Reihe von Elementen bei denen es egal ist wie oft sie eingeblendet werden.

Es gibt also kurz gesagt 3 Dinge zu beachten:

a) Wie oft soll ein Element pro Stunde eingeblendet werden?
b) Wie lange soll jedes einzelne Element eingeblendet werden?
c) Wie sind Lücken zu füllen?

Nun meine Frage: Wie kann man einen solchen zeitlichen Ablauf programmieren? Der Plan sollte vor dem Start der Einblendungen feststehen und dann nur noch abgearbeitet werden.

Ich hoffe, ihr könnt mir helfen!

Vielen Dank und schonmal schönen 3. Advent!
Delphi-Coder

Jürgen Thomas 16. Dez 2006 22:44

Re: Zeitliche Abfolge erstellen
 
Für mich klingt das so, als ob sinnvollerweise für jedes Element ein eigener Timer genutzt werden sollte: Er prüft den bisherigen Status des Elements (ein- oder ausgeblendet), bestimmt die Dauer der nächsten Ein- bzw. Ausblendung und verändert entsprechend sein Intervall und setzt danach den neuen Status des Elements.

Wenn Du immer mit einem Vielfachen von (z.B.) 1 min arbeitest, kannst Du auch mit einem einzelnen Timer arbeiten:
  1. Erzeuge ein Record o.ä. für jedes Element, bei dem das Element (Control?) selbst sowie die beiden Zeit-Variablen gespeichert sind.
  2. Außerdem soll für jedes Element in diesem Record die Restzeit für den aktuellen Status gespeichert werden.
  3. Erzeuge ein Array für alle diese Elemente.
  4. Der Timer wird auf Interval=60000 eingestellt und bearbeitet in einer Schleife alle Elemente: Restzeit um 1 min verringern, bei 0 Status umschalten und Restzeit neu festlegen.
Ich hoffe, eines dieser Verfahren ist nützlich. Gruß Jürgen

Delphi-Coder 16. Dez 2006 22:54

Re: Zeitliche Abfolge erstellen
 
Danke für die Antwort!

Das wären natürlich 2 Möglichkeiten! Jedoch wird da bisher nur die Anzeigedauer der Elemente beachtet. Wie kann ich aber dann realisieren, dass bestimmte Elemente wiederholt angezeigt werden?
Dort sind dann ja auch Überschneidungen zum vermeiden!

Zum Beispiel:
Element A soll alle 5 Minuten angezeigt werden und Element B alle 10 Minuten. Dann würde es ja bei 10,20,30 usw. zu Überlagerungen kommen.

Jürgen Thomas 16. Dez 2006 23:26

Re: Zeitliche Abfolge erstellen
 
Zitat:

Zitat von Delphi-Coder
Dort sind dann ja auch Überschneidungen zum vermeiden!

Zum Beispiel:
Element A soll alle 5 Minuten angezeigt werden und Element B alle 10 Minuten. Dann würde es ja bei 10,20,30 usw. zu Überlagerungen kommen.

Ich weiß nicht, welche Elemente wo und wie angezeigt werden sollen. Die Bedingungen, welches Element den "Vorzug" bekommen soll, kannst auch nur Du bzw. Dein Anwender bestimmen.

Zur Prüfung dieser Bedingungen wäre die Variante "ein Timer mit Array" praktischer. Das müsstest Du dann dort einbauen.

Gruß Jürgen

PS. So, jetzt gehe ich aber erstmal schlafen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 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