Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi durchschnittszeit ermitteln (https://www.delphipraxis.net/152112-durchschnittszeit-ermitteln.html)

arest 14. Jun 2010 00:32

AW: durchschnittszeit ermitteln
 
okay, ich habe jetzt meine probleme annähernd in den griff bekommen^^ die lösung verläuft im ansatz nicht ideal, aber in diesem fall ist es mir inzwischen egal!

mein problem jetzt, ich habe 10 zeiten in string-variablen gespeichert. so kann ich sie natürlich nicht verrechnen um meinen schnitt rauszubekommen.. die strings sind alle im format 'mm:ss:zz' ich hab im forum schon rausgefunden, dass es mit hilfe von StrToTime und FormatSettings die möglichkeit gibt, dass ich diese variablen in zeiten umwandle, was ich erstens nicht ganz hinbekomme, da mir nicht klar ist, wie das mit formatsettings genau geht und zweitens ist dann die frage, ob ich damit überhaupt einen durchschnitt ermitteln könnte?

denke einfache frage -> wie wandel ich die 10strings in passende variablen um, und wie verrechne ich sie dann miteinander?!

thkerkmann 14. Jun 2010 07:36

AW: durchschnittszeit ermitteln
 
Dein Ansatz sollte genau andersherum sein.

Verwende TTime variablen für die ganze Stoppuhrgeschichte, und nur für die Anzeige verwendest du Labels und die entsprechenden Umwandlungsfunktionen. Dann hast du auch keine Probleme.

Gruss

xZise 14. Jun 2010 08:23

AW: durchschnittszeit ermitteln
 
Als Ergänzung zu Vorposter:
Vermeide einen String oder gar eine Komponente als Zwischenspeicher zu benutzen sondern speichere selber in einer Variable zwischen.

MfG
Fabian

David Martens 14. Jun 2010 20:05

AW: durchschnittszeit ermitteln
 
Also wenn du nicht auf deine 10 Durchläufe pochst dann mach es doch einfach so:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    btnStart: TButton;
    btnStop: TButton;
    lbl1: TLabel;
    lblZeit: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    lblDurchschnitt: TLabel;
    Timer1: TTimer;
    procedure btnStartClick(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    fZeit,                      // Variable für die aktuelle Stopuhr
    fZeitCumulativ : extended;  // Variable für die aufaddierten Stopzeiten
    iCount : integer;           // Variable für Anzahl der Stopzeiten
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnStartClick(Sender: TObject);
begin
  // Stopuhr startet bei 0 :)
  fZeit := 0;

  // Zeit anzeigen
  lblZeit.Caption := FormatDateTime('hh:nn:ss zzz', fZeit);

  // Timer/Stopuhr starten
  Timer1.Enabled := true;
end;

procedure TForm1.btnStopClick(Sender: TObject);
begin
  // Timer/Stopuhr anhalten
  Timer1.Enabled := false;

  // Zeit zu den Stopzeiten addieren und Anzahl hochsetzen
  fZeitCumulativ := fZeitCumulativ + fZeit;
  inc(iCount);

  // Durchschnitt anzeigen
  lblDurchschnitt.Caption := FormatDateTime('hh:nn:ss zzz', fZeitCumulativ / iCount);

  lbl3.Caption := 'von ' + IntToStr(iCount);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // nächsten Zeitpunkt berechnen
  // Timer1.Interval / 1000 gewärleistet immer die richtige Schrittweite egal was im Timer eigestellt ist
  fZeit := fZeit + Timer1.Interval / 1000 / 86400;

  // Zeit anzeigen
  lblZeit.Caption := FormatDateTime('hh:nn:ss zzz', fZeit);
end;
mit folgender .dfm

Delphi-Quellcode:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 125
  ClientWidth = 231
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object lbl1: TLabel
    Left = 8
    Top = 8
    Width = 22
    Height = 13
    Caption = 'Zeit:'
  end
  object lblZeit: TLabel
    Left = 16
    Top = 24
    Width = 3
    Height = 13
  end
  object lbl2: TLabel
    Left = 112
    Top = 8
    Width = 64
    Height = 13
    Caption = 'Durchschnitt:'
  end
  object lblDurchschnitt: TLabel
    Left = 120
    Top = 24
    Width = 3
    Height = 13
  end
  object lbl3: TLabel
    Left = 182
    Top = 8
    Width = 21
    Height = 13
    Caption = 'von '
  end
  object btnStart: TButton
    Left = 8
    Top = 56
    Width = 75
    Height = 25
    Caption = 'Start'
    TabOrder = 0
    OnClick = btnStartClick
  end
  object btnStop: TButton
    Left = 8
    Top = 87
    Width = 75
    Height = 25
    Caption = 'Stop'
    TabOrder = 1
    OnClick = btnStopClick
  end
  object Timer1: TTimer
    Enabled = False
    Interval = 10
    OnTimer = Timer1Timer
    Left = 104
    Top = 56
  end
end


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr.
Seite 2 von 2     12   

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