AGB  ·  Datenschutz  ·  Impressum  







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

Timer zählt +2 anstatt +1???

Ein Thema von Overclocker · begonnen am 2. Jul 2007 · letzter Beitrag vom 2. Jul 2007
Antwort Antwort
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#1

Timer zählt +2 anstatt +1???

  Alt 2. Jul 2007, 19:04
Hallo,

ich habe folgendes Problem.
Beim Drücken eines Buttons möchte ich, dass in einem Edit Feld die Zeit in Sekunden hochgezählt wird, das heißt es soll langsam von 0 aus an immer nach 1 Sekunde + 1 dazu zählen.
Hier mein Code:

Delphi-Quellcode:
timer1.enabled := true;
start := 0;



end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin
start := start+1;
form2.edit3.text := FloatToStr(start);
end;
Der Timer ist auf ein Intervall von 1000 (also 1 Sekunde) eingestellt, doch wenn ich das Programm laufen lasse, zählt er mir jede Sekunde immer +2 dazu und ich finde den Grund nicht.
Zudem würde ich gerne wissen, wie ich dann einstellen kann, dass es bei 60 Sekunden dann 1 Minute anzeigt und nach 60 Minuten dann 1 Stunde usw. (also 16:30:10... 16:30:11...16:30:12 usw.)

Kann mir da jemand helfen, wäre super!!!

Grüße
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Timer zählt +2 anstatt +1???

  Alt 2. Jul 2007, 19:12
Du darfst nicht die Zeit mit einem Timer aufaddieren, denn die Timerungenauigkeiten addieren sich im Laufe der Zeit zu grossen Beträgen. (5 Min pro Stunde gut möglich)
Besser Startzeit merken und die Differenz anzeigen:
Delphi-Quellcode:
var
   StartZeit : TDateTime; // am Besten im private-Abschnitt der Klasse TForm1 ablegen
...
   StartZeit := Now;
end;
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   form2.edit3.text := TimeToStr(Now- Startzeit);
end;
Das Timer-Interval hat so keinen Einfluss auf die Genauigkeit der Anzeige.
Bei Timer-Interval von 5000 wird die Anzeige halt nur alle 5s aktualisiert.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Timer zählt +2 anstatt +1???

  Alt 2. Jul 2007, 19:14
+2?

Bist du dir sicher? Das kann ich mir überhaupt nicht erklären.

Das andere geht übrigens so:

Delphi-Quellcode:
var s, m, h: Integer;

//...

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  inc(s); //oder s:=s+1;
  if s>=60 then
  begin
    inc(m);
    s:=0;
  end;
  if m>=60 then
  begin
    inc(h);
    m:=0;
  end;

  //Hier dann wieder das Edit-Feld:
  form2.edit1:=inttostr(h)+':'+inttostr(m)+':'+inttostr(s);
end;
EDIT: @shmia: Das stimmt natürlich, darauf sollte man achten.
Man deklariert noch eine Variable start, und weißt der am Anfang den Wert von GetTickCount() zu.

Die Timer-Methode geht dann wieder so:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var diff: Integer;
begin
  diff:=GetTickCount-start;
  h:=diff div 60;
  diff:=diff mod 60;
  m:=diff div 60;
  s:=diff mod 60;
  
  form2.edit1:=inttostr(h)+':'+inttostr(m)+':'+inttostr(s);
end;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Timer zählt +2 anstatt +1???

  Alt 2. Jul 2007, 19:42
Wozu denn dieses Ticks-Integer-div-mod-Gemurkse, wenn es so elegante Wege wie den von shmia gibt ?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#5

Re: Timer zählt +2 anstatt +1???

  Alt 2. Jul 2007, 20:46
@shmia: super funktioniert einwandfrei

habt mir sehr geholfen danke, jetzt werd ich mich noch daran setzen nen button einzufügen wo man die "stoppuhr" anhalten kann und bei einem klicken auf nen anderen Button die Zeit wieder weiterlaufen lassen kann

Falls mein Projekt fertig ist setz ich es natürlich sofort hier rein

Grüße
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Timer zählt +2 anstatt +1???

  Alt 2. Jul 2007, 21:35
Hallo,

damit die Anzeige einigermaßen synchron zum Takt der Systemuhr läuft, kann man das Interval korrigieren: klick

Grüße vom marabu
  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 05:05 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