AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Timer

Ein Thema von P.A.P. · begonnen am 15. Apr 2017 · letzter Beitrag vom 15. Apr 2017
Antwort Antwort
a.def
(Gast)

n/a Beiträge
 
#1

AW: Timer

  Alt 15. Apr 2017, 10:22
Wär das was?

Delphi-Quellcode:

// oben bei private deklarieren:
iMilliSeconds: Integer;
// .....

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Inc(iMilliSeconds, Timer3.Interval);
 Panel1.Caption := IntToStr(iMilliSeconds);

 if iMilliSeconds = 5000 then
  Timer1.Enabled := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 iMilliSeconds := 0;
 Timer1.Enabled := True;
end;

Der setzt dir "zähler" immer wieder auf 0 zurück, weil "zähler" im Timer selber deklariert ist. Bei jedem Timerdurchlauf gehts dann wieder an den Anfang, also 0.
Die Variable "zähler" (oder wie bei mir iMilliSeconds) muss außerhalb des Timers deklariert werden und darf nur EIN MAL initialisiert (zurückgesetzt) werden. Am besten im Button der auch den Timer startet.

P.S.: wirkliche Millisekunden sind das aber auch nicht. Pro 1000ms die im Panel angezeigt werden kommt es mir so vor, als ob das tatsächlich etwa 1,5 Sekunden wären.

Geändert von a.def (15. Apr 2017 um 10:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
780 Beiträge
 
#2

AW: Timer

  Alt 15. Apr 2017, 10:48
P.S.: wirkliche Millisekunden sind das aber auch nicht. Pro 1000ms die im Panel angezeigt werden kommt es mir so vor, als ob das tatsächlich etwa 1,5 Sekunden wären.
Ein Timer ist viel zu ungenau. Besser du speicherst dir in der Variablen GetTickCount ab und rechnest immer GetTickCount - DieVariable.
  Mit Zitat antworten Zitat
P.A.P.

Registriert seit: 15. Apr 2017
5 Beiträge
 
#3

AW: Timer

  Alt 15. Apr 2017, 10:52
Danke für den Tipp, aber wie löse ich jetzt das Problem mit dem stoppen des Timers?
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
780 Beiträge
 
#4

AW: Timer

  Alt 15. Apr 2017, 11:01
Danke für den Tipp, aber wie löse ich jetzt das Problem mit dem stoppen des Timers?
Entweder du rechnest komplett in Millisekunden (Typ Cardinal, wie es GetTickCount zurückgibt) oder du prüfst einfach mit SameValue(...). Denn bei real und Co darf man nie auf gleich prüfen, da diese Zahlen zu ungenau sind und fast nie z.B. exakt 2.0 ergeben sondern z.B: 2,000....0001.
  Mit Zitat antworten Zitat
P.A.P.

Registriert seit: 15. Apr 2017
5 Beiträge
 
#5

AW: Timer

  Alt 15. Apr 2017, 11:50
danke an alle helfer, jetzt funktionierts
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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