AGB  ·  Datenschutz  ·  Impressum  







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

Stopuhr programmieren

Ein Thema von flodeluxe · begonnen am 6. Feb 2003 · letzter Beitrag vom 19. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2      
flodeluxe

Registriert seit: 20. Jan 2003
Ort: Hessen, bei FFM
36 Beiträge
 
Delphi 6 Personal
 
#1

Stopuhr programmieren

  Alt 6. Feb 2003, 15:07
Hi
Wie kann ich eine Stopuhr programmieren?
Mit einer Time-Komponente?
P.S. Ich hab schon in der Hilfe geschaut
mfg Flo
Danke im Vorraus
Mfg Flo
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2
  Alt 6. Feb 2003, 15:17
Stelle Timer.Interval auf die Anzahl der Milisekunden ein, die du haben willst und schreibe in Timer.OnTimer rein, was passieren soll, wenn er fertig hat.
Denk dran: sobald Timer.enabled = true, dann fängt er an herunterzuzählen...

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Stopuhr programmieren

  Alt 6. Feb 2003, 15:23
Zitat von flodeluxe:
Hi
Wie kann ich eine Stopuhr programmieren?
Mit einer Time-Komponente?
P.S. Ich hab schon in der Hilfe geschaut
mfg Flo
Schaue mal nach GetTickCount


Als Code sehe das dann so aus:

Delphi-Quellcode:
var
   startzeit,
   endzeit : Cardinal;

procedure TForm1.Button1Click(Sender: TObject);
begin
 If (Button1.Caption = 'Start') then
  begin
   startzeit := GetTickCount;
   Button1.Caption := 'Stop';
   label1.Caption := 'Uhr läuft';
  end
 else
  begin
   endzeit := GetTickCount;
   label1.Caption := Format ('Die Stopuhr lief %d ms.',[endzeit-startzeit]);
   Button1.Caption := 'Start';
  end;
end;
Benötigt wird 1 Button mit der Caption 'Start' und ein Label.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4
  Alt 6. Feb 2003, 18:18
Hallo,

noch ein kurzer Tipp hierzu. Ich habe dieses Problem auch schon lösen müssen und dabei folgende Probleme festgestellt:

Stellst du den Timer auf eine Sekunde ein (z.B. um einen sichtbaren Countdown darzustellen) wird deine OnTimer-Methode alle Sekunde einmal aufgerufen. Zähle dann nicht einfach die Aufrufe durch um deine Endzeit zu ermitteln, sondern prüfe die tatsächlich abgelaufene Zeit (hier ist nämlich GetTickCount hilfreich). Die Abarbeitung des OnTimer-Ereignisses benötigt auch Task-Zeit die immer noch dazukommt (ist der Processor arg beschäftigt kommt da ganz schön was zusammen). Bei längeren Countdowns macht das auch mal mehrere Sekunden aus.

Also, denk daran oder Dein Countdown darf ungenau sein.

Gruß oki
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#5
  Alt 6. Feb 2003, 18:24
die globale Variable "Endzeit" braucht man gar nicht, oder wenn, dann nur lokal...
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6
  Alt 6. Feb 2003, 18:43
@oki: dann muss man einfach Timer.Enabled auf false stellen, dann wird nicht jede Minute nocheinmal wieder holt... Allerdings kann ich nur sehr Sharky's Methode empfehlen, da diese deutlich besser ist und ich dich falsch verstanden habe.

Chris
  Mit Zitat antworten Zitat
flodeluxe

Registriert seit: 20. Jan 2003
Ort: Hessen, bei FFM
36 Beiträge
 
Delphi 6 Personal
 
#7

DANKE

  Alt 7. Feb 2003, 19:09
Hi
Ok, ich hatte bis jetzt noch keinen Zeit, aber ich werde es gleich mal probieren!
Danke im Vorraus
Mfg Flo
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#8
  Alt 12. Feb 2003, 17:54
Hallo chakotay,

ja, ja, genau da steckt das Problem. Wenn Du den Timer anhälst um Code zu verarbeiten vergeht auch Zeit! Dann passiert praktisch folgendes:
Timer läuft eine Sekunde -> angehalten -> Code wird z.B. 100ms bearbeitet -> Timer start -> läuft eine Sekunde ..... usw.
Seit Begin des ersten Starts sind zum zweiten Neustart aber schon 1,1 Sekunden vergangen! So geht das immer weiter.
In meinem Beispiel hast Du also nach 10 Starts nicht 10 sondern 11 Sekunden hinter dier.

Das hört sich alles recht einfach an. Wenn man das jetzt sieht sagt jeder "Sowas blöd, weiß man doch".

Wenn mans das erste mal macht hauts einem aber aus Erfahrung immer genau an so einfachen Stellen die Füße weg.

Gut, das dazu

Gruß oki
  Mit Zitat antworten Zitat
Sertrain

Registriert seit: 25. Mär 2009
18 Beiträge
 
#9

AW: Stopuhr programmieren

  Alt 19. Jan 2011, 13:24
Auch wenn das Thema eingestaubt ist brauche ich es gerade. Wie lass ich mir nicht die Millisekunden anzeigen, sondern die Sekunden plus Millisekunden. Also zB: 1,34 sekunden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

AW: Stopuhr programmieren

  Alt 19. Jan 2011, 13:27
label1.Caption := Format ('Die Stopuhr lief %.2f s.',[(endzeit-startzeit) / 1000]);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:11 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