AGB  ·  Datenschutz  ·  Impressum  







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

Timer löst nicht regelmäßig aus

Ein Thema von TheTommynator · begonnen am 3. Okt 2008 · letzter Beitrag vom 3. Okt 2008
Antwort Antwort
TheTommynator

Registriert seit: 3. Okt 2008
5 Beiträge
 
#1

Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 13:50
Hallo,

das ist mein 1. Beitrag in diesem Forum

Nun zu meiner Frage:

Ich möchte eine Art Doppeltimer realisieren.
D.h. das Programm soll 2 Zeiten entgegennehmen und soll dann einen Timer starten, der bis zur 1. Zeit zählt. Sobald diese erreicht ist, soll ein Sound ausgegeben und der 2. Timer gestartet werden. Ist dieser fertig, so soll ebenfalls ein Sound ausgegeben werden und wieder Timer 1 gestartet werden.

Bisher bin ich erstmal daran überhaupt einen Timer zu programmieren, der Zehntelsekunden, Sekunden und Minuten zählt.
Dazu verwende ich einen Timer mit 100 ms Intervall.
In der OnTimer Prozedur mache ich folgendes:
Delphi-Quellcode:
zehntelsek := zehntelsek + 1;
  if(zehntelsek = 10) then
  begin
    zehntelsek := 0;
    sekunden := sekunden + 1;
    if(sekunden = 60) then
    begin
      sekunden := 0;
      minuten := minuten + 1;
    end;
  end;
  Form1.LZehntelsek.Caption := inttostr(zehntelsek);
  Form1.LSekunden.Caption := inttostr(sekunden);
  Form1.LMinuten.Caption := inttostr(minuten);
Ein Test des Codes brachte allerdings ein ernüchterndes Ergebnis.

Eine Minute in realer Zeit entspricht nur 55 Sekunden in meinem Timer.
Woran liegt das?
Und ist das überhaupt der richtige Ansatz für einen Doppeltimer?

Vielen Dank schonmal
TheTommynator
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 13:54
Setze mal das Timer-Intervall nach oben.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
TheTommynator

Registriert seit: 3. Okt 2008
5 Beiträge
 
#3

Re: Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 13:56
Dann lassen sich aber die Zehntelsekunden nicht mehr darstellen?!
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 14:00
Das musst du beim TTimer in Kauf nehmen. Es gibt bessere Timer, aber diese verbrauchen auch mehr Ressourcen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
TheTommynator

Registriert seit: 3. Okt 2008
5 Beiträge
 
#5

Re: Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 14:02
Das wäre mir ja prinzipiell egal, da ich es nur für mich verwenden will.

Kannst du mir vielleicht einen solchen Timer sagen, der besser funktioniert?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 14:05
Suche mal nach dem Stichwort Multimedia-Timer. Davor solltest du allerdings etwas anderes überprüfen: Wie sieht die Zeit-Diskrepanz aus, wenn du nicht auf die Labels zugreifst, sondern lediglich das Ende der Minute mit einem ShowMessage signalisierst?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 14:18
Du kannst ohne Probleme die 1/10tel Sekunden darstellen. Du darfst nur nicht davon ausgehen, das der Timer wirklich genau geht. Muss er ja auch nicht. Stell doch einfach die Differenz zwischen dem Start der Messung und der aktuellen Uhrzeit dar. DAS ist ja genau. Diese Zeit wird dann eben mehr oder weniger alle Schiessmichtotzehntelsekunden dargestellt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
TheTommynator

Registriert seit: 3. Okt 2008
5 Beiträge
 
#8

Re: Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 14:33
Das klingt auch nach einem interessanten Lösungsansatz.

Im übrigen gibt es die Zeitdiskrepanz auch dann, wenn die Label nicht aktualisiert werden.
  Mit Zitat antworten Zitat
TheTommynator

Registriert seit: 3. Okt 2008
5 Beiträge
 
#9

Re: Timer löst nicht regelmäßig aus

  Alt 3. Okt 2008, 15:04
Ich hab's jetzt mit folgender Komponente gelöst:

http://www.delphipraxis.net/internal...t.php?t=103162

Diese löst deutlich zuverlässiger aus, als TTimer.

Vielen Dank an Alle.
  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 22:09 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