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

user profile iconelundril 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; //Start / Stop                    


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

user profile iconoldmax 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