Delphi-Quellcode:
procedure TForm1.ResetClock;
begin
if Label1.Caption <> '00:00:00'
then begin
ClockStarted := False;
TimeStopped := getTickcount-TimeStarted + TimeStopped;
TimeStopped := 0;
Label1.Caption := TicksToTime(0); // = '00:00:00'
if RadioButton1.Checked=true
then begin
inc(n);
if n>10
then begin
antwort:=form3.ShowModal;
if antwort=mrok
then begin
n:=1;
end
else begin
//asdf
end;
end
end
end
end;
procedure TForm1.StartClock;
begin
ClockStarted := True;
TimeStarted := GetTickCount;
repeat
TimeElapsed := GetTickCount-TimeStarted;
Label1.Caption := TicksToTime(TimeStopped+TimeElapsed);
application.ProcessMessages; // damit sich das Programm nicht "aufhängt"
if application.Terminated then // Falls die Anwendung inzwischen beendet wurde
exit;
sleep(1); // 100% CPU-Auslastung vermeiden
until not ClockStarted;
end;
so ich habe dann mal ein wenig dran rumgebastelt.. es läuft soweit erstmal, dass er schritt für schritt die einzelnen captions füllt, aber wenn ich es als variablen haben möchte, gibts immer probleme
im code zu sehen, dass ich immer erst beim reset der uhr den zähler n erhöhe, damit die zeit, wenn ich nur pausiere und dann weiter laufen lasse weiterhin im gleichen label landet und nicht als nächste zeit für den zu ermittelnden durchschnitt ist... die abfrage prüft dann, ob die bereits zehn gefüllten zeiten überschrieben werden sollen, eigentlich unwichtig für mein problem!
beim startclock hab ich auch keinerlei probleme.. es hängt immer beim stopclock! da taucht immer ein runtime error auf :/ ich hatte es vorher mal probiert einfach nur in labels zu füllen, damit ich zumindest erst mal alle zeiten habe.. später wollte ich die dann in variablen umwandeln (im ansatz eigentlich falsch, ist mir klar....) zum test hats erst mal geklappt... das sah dann so aus:
Delphi-Quellcode:
if n=1
then Label14.Caption:=Label1.Caption;
if n=2
then Label15.Caption:=Label1.Caption;
und so weiter.. abgeändert habe ich es dann in folgendes:
Delphi-Quellcode:
procedure TForm1.StoppClock;
begin
ClockStarted := False;
TimeStopped := getTickcount-TimeStarted + TimeStopped;
Label1.Caption:= TicksToTime(TimeStopped);
if RadioButton1.Checked=true
then begin
if n=1
then zeit1:=StrToTime(Label1.Caption);
Label14.Caption:=TimeToStr(zeit1);
if n=2
then zeit2:=StrToTime(Label1.Caption);
Label15.Caption:=TimeToStr(zeit2);
if n=3
then zeit3:=StrToTime(Label1.Caption);
Label16.Caption:=TimeToStr(zeit3);
if n=4
then zeit4:=StrToTime(Label1.Caption);
Label17.Caption:=TimeToStr(zeit4);
if n=5
then zeit5:=StrToTime(Label1.Caption);
Label18.Caption:=TimeToStr(zeit5);
if n=6
then zeit6:=StrToTime(Label1.Caption);
Label19.Caption:=TimeToStr(zeit6);
if n=7
then zeit7:=StrToTime(Label1.Caption);
Label20.Caption:=TimeToStr(zeit7);
if n=8
then zeit8:=StrToTime(Label1.Caption);
Label21.Caption:=TimeToStr(zeit8);
if n=9
then zeit9:=StrToTime(Label1.Caption);
Label22.Caption:=TimeToStr(zeit9);
if n=10
then zeit10:=StrToTime(Label1.Caption);
Label23.Caption:=TimeToStr(zeit10);
// schnitt:=((zeit1 + zeit2+ zeit3 + zeit4 + zeit5 + zeit6 + zeit7 + zeit8 + zeit9 + zeit10) div n);
// Label25.Caption:=TimeToStr(schnitt);
end
end;
das problem ist, dass er mir dabei jedes mal direkt rausspringt... wo ist der fehler?