AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTimer anhalten und weiterlaufen lassen

Ein Thema von Digielm · begonnen am 4. Mär 2009 · letzter Beitrag vom 4. Mär 2009
Antwort Antwort
Digielm

Registriert seit: 2. Aug 2006
246 Beiträge
 
Delphi 5 Enterprise
 
#1

TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 10:49
Hallo Leute

habe zu der Timer Komponente eine Frage.

ich habe 3 Timer auf meiner Form laufen.

folgendes Problem.

1. Timer hat ein Event. Tool läuft. währenddessen bekommt auch der 2. Timer das Event zur Verarbeitung darf aber nicht starten bevor das 1. Timerevent nicht abgearbeitet ist. genauso verhält es sich mit dem dritten timer.

Es darf also immer nur ein event ausgeführt werden.

Kann mir jemand helfen um das zu realisieren.

Mein Problem dabei ist wenn ich ttimer.enabeld := false und dann wieder true setze fängt der ja wieder bei 0 an oder kann ich den einfach nur pausieren, damit er dann an der stelle weitermacht wo er war.

Danke im Voraus auf Antworten
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#2

Re: TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 10:53
die Timer-Events werden über Windows-Messages gehandhabt
und diese werden nur nacheinander abgearbeitet.

Es sei denn du veranlaßt zwischendurch selber die Verarbeitung dieser Nachrichten.
(z.B. via Application.ProgressMessages oder den Sleep-Ersatz Delay)

Heißt, solange du nichts machts, was wärend der Eventbearbeitung die Verarbeitung der Messages veranlaßt, warten die anderen Timer.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 10:54
Dann merk dir doch in einer globalen Varaible, wo dein Timer zu letzt war.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#4

Re: TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 10:59
ich wüßte aber nicht wie man auslesen kann wo der Timer grad steht (also vor wievielen Millisekunden der das letze Mal ausgeführt wurde) ... daß müßte man dann schon selber im Timer-Event speichern.

Aber wie gesagt ... solange man die Nachrichtenverarbeitung nicht beeinflußt, kann es eigentlich nicht passieren, daß 2 Timer-Events gleichzeitig ausgeführt werden.


Was machst du denn alles in diesen Events?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Digielm

Registriert seit: 2. Aug 2006
246 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 11:40
In den events werden Datenbank abgleiche durchgeführt
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 11:55
Zitat von himitsu:
ich wüßte aber nicht wie man auslesen kann wo der Timer grad steht
Ich weiß auch gar bnicht, was er damit meint. Ich bin davon ausgegangen, dass er irgendwa smacht und das könnte man mit zählen un dsich merken.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
HappyJoe

Registriert seit: 14. Nov 2006
37 Beiträge
 
Delphi XE2 Professional
 
#7

Re: TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 14:27
Ich weiß nicht, ob ich dich richtig verstanden habe, aber versuche es doch mal mit einer eigenen Pseudo-Nachrichtenschlange.

Nehme ein TEdit Text=''. Wenn der 1. Timer auslöst, hänge an Text die '1' an. Durch OnChange wird die eigentliche Bearbeitungroutine aufgerufen. Irgendwann löst Timer 2 aus während 1 noch nicht beendet ist, folglich ist Text ='12'. OnChange ruft die Behandlungsroutine auf, da jedoch die 1. Ziffer nicht 2 ist, passiert nichts. Irgenwann ist 1 fertig und löscht die 1. Pos von Text. OnChange ruft die Behandlungsroutine auf, diesmal ist die 1. Stelle = 2 für die 2. Behandlungsroutine. ...
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#8

Re: TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 14:56
Zitat von Digielm:
1. Timer hat ein Event. Tool läuft. währenddessen bekommt auch der 2. Timer das Event zur Verarbeitung darf aber nicht starten bevor das 1. Timerevent nicht abgearbeitet ist. genauso verhält es sich mit dem dritten timer.
Hallo,

das geht so nicht und es wird auch üblicherweise nicht so gemacht. Ich verwende in solchen Fällen einen Timer, der ein Zeitraster lifert, z.B. 1 Sec. Im Timerevent werden dann "Software-Timer" heruntergezählt, das sind einfach Zählvariablen - soll etwas alle 30 sec passieren, wird also der Zähler auf 30 gesetzt und in jedem 1 sec-Event um 1 heruntergezählt, ist null erreicht, wird die Massnahme ausgelöst und der Timer wieder auf 30 gesetzt. So kann man mit einem Timer ohne weiteres 10 oder mehr Ablaufzeiten erzeugen/überwachen.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#9

Re: TTimer anhalten und weiterlaufen lassen

  Alt 4. Mär 2009, 16:09
Wie gesagt, wärend ein Timerereignis läuft und darin nicht irgendwo die Nachrichtenschleife abgearbeitet wird, dann stehen andere Timer (so wie eigentlich die ganze VCL sonnst stollsteht)
> siehe TimerA im Beispiel

Wenn wärendessen die Nachrichtenschleife abgearbeitet wird, dann können auch andere Timerereignsisse eintreten.
> siehe TimerC im Beispiel

> TimerB ist sozusagen als zusätzlicher Timer vorgesehn,
> wobei auch TimerA zeitlich wärend TimerC ausgeführt werden kann.


= TimerA läuft immer alleine
= TimerB auch
= TimerC nicht
Angehängte Dateien
Dateityp: 7z projects_802.7z (151,6 KB, 3x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 23: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