Entwickler-Ecke
Sonstiges (Delphi) - Stoppuhr entwickeln
Rasul - Mo 23.10.06 13:12
Titel: Stoppuhr entwickeln
Ich bin gerade dabei eine einfache Stoppuhr zu entwickeln,
was also heißt:
Ein Edit.Feld, wo die Zeit auf 0,00 Steht und sobald man auf einen Knopf drückt soll sich die Zeit immer in 0,01 schritten erhöhen.
Später baue ich natürlich noch einen Knopf dazu, der den Timer wieder ausschaltet, sodass die Uhr stoppt.
Aber nun mein Problem:
Wie bringe ich die Uhr dazu sich jeweils um 0,01 zu erhöhen?
ich habe das Edit Feld schonmal so gemacht, das die Zahlen darin vom Typ real sind, aber wie bringe ich es nun dazu, sich zu erhöhen?
hier mal der Quelltext den ich bisher habe:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Edit1Change(Sender: TObject); var Zahleins: real; Code : integer ; Rstr : string ; begin Val(Edit1.Text, Zahleins, Code); Str(Zahleins:8:2, RStr); Edit1.Text:= Rstr; end;
procedure TForm1.Timer1Timer(Sender: TObject); var Zahleins: real; Code : integer ; Rstr : string ; begin Val(Edit1.Text, Zahleins, Code); Str(Zahleins:8:2, RStr); Edit1.Text:= Rstr; end;
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.enabled:=true; end; |
ist da wenigstens schon ein ansatz richtig oder liege ich schonmal total falsch?
wäre nett wenn ihr mir da etwas helfen könntet,
aber auch bitte mit Begründung, da ich es ja selber lernen und begreifen möchte.
elundril - Mo 23.10.06 13:15
könntest du statt dem zitat die Delphi-tags verwenden?? einfach statt quote, delphi reinschreiben!
Rasul - Mo 23.10.06 13:19
elundril hat folgendes geschrieben: |
könntest du statt dem zitat die Delphi-tags verwenden?? einfach statt quote, delphi reinschreiben! |
schon erledigt.
Kroko - Mo 23.10.06 14:47
(a) in 0.01s Schritten, das wird nicht möglich sein, die kleinste "Auflösung liegt bei
5/100!
(b) Merke dir bei Start die Zeit mittels now, lasse eine Timer mit 100ms = 0,1 laufen und aktualisiere Deine Anzeige, bei Stopp berechne die Zeit = "Now"-Start !
oldmax - Mo 23.10.06 15:04
Hi
Der Ansatz ist nicht verkehrt, aber laß Edit.Change weg und arbeite nur in der onTimer-Routine:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Timer1Timer(Sender: TObject); var Zahleins: real; begin Zahleins:=StrToFloat(Edit1.Text)+1/100; Edit1.Text:=FormatFloat('#0.00',Zahleins); end; |
Den Timer -Intervall setzt du auf 10 und in der Onclick-Routine deines Buttons Schreibst du
Delphi-Quelltext
1:
| Timer.Enabled:=not Timer.Enabled; |
Mit einem Reset-Button weist du einfach
Delphi-Quelltext
1:
| Edit1.Text:=FormatFloat('#0.00',1/100); |
zu
fertig.......
Gruß Oldmax
oldmax - Mo 23.10.06 15:07
Hi
Ich nochmal, Kroko hat recht, meine Stopuhr läuft etwas unsynchron.... :shock:
oldmax
Kroko - Mo 23.10.06 15:42
oldmax hat folgendes geschrieben: |
Hi
Ich nochmal, Kroko hat recht, meine Stopuhr läuft etwas unsynchron.... :shock:
oldmax |
:D OnTimer wird halt in die Warteschlange eingereiht, wenn etwas anderes viel Rechenzeit nimmt, kann es schon einmal dauern, und Timer.Intervall := 10 ist auch nicht das Wahre, lieber 100 bzw besser 500 oder 1000 :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!