Einzelnen Beitrag anzeigen

arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#8

AW: durchschnittszeit ermitteln

  Alt 13. Jun 2010, 14:49
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?
  Mit Zitat antworten Zitat