AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TStopwatch

Ein Thema von AJ_Oldendorf · begonnen am 14. Aug 2015 · letzter Beitrag vom 18. Aug 2015
Antwort Antwort
AJ_Oldendorf

Registriert seit: 12. Jun 2009
439 Beiträge
 
Delphi 12 Athens
 
#1

AW: TStopwatch

  Alt 14. Aug 2015, 21:04
Das mit dem Record war mir schon klar, deswegen ja auch mein entsprechendes Beispiel
Könnt ihr denn das gleiche Verhalten feststellen oder funktioniert das bei euch?

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#2

AW: TStopwatch

  Alt 14. Aug 2015, 21:57
Das mit dem Record war mir schon klar, deswegen ja auch mein entsprechendes Beispiel
Könnt ihr denn das gleiche Verhalten feststellen oder funktioniert das bei euch?
Das kann nicht funktionieren! In der Implementation von TStopWatch.Create wird result.Reset aufgerufen. In deinem Beispiel wird der Result aber verworfen.
Da Create eine Klassenfunktion ist, kann sie auch gar keine Auswirkungen auf deine Instanz haben, da bei einer (statischen) Klassenfunktion kein Self mitgegeben wird. Das Verhalten ist somit nicht nur nachvollziehbar, sondern auch konsistent und so gewollt.

Folgende Verfahren funktionieren aber:
Delphi-Quellcode:
  
  aMessungGes.Create;
  aMessungGes.Reset;
  aMessungGes.Start;
  ...

  aMessungGes := TStopWatch.Create;
  aMessungGes.Start;
  ...

  aMessungGes := TStopWatch.StartNew;
  ...
Das Create im ersten Teil ist sogar (mindestens einmal) notwendig, damit die Klassenfelder initialisiert werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#3

AW: TStopwatch

  Alt 14. Aug 2015, 22:22
Beispiel für längere Zeiten:
Delphi-Quellcode:
procedure MM(s:String); Begin Form2.Memo1.Lines.Add(s); end;

function MSecToTime(mSec: Int64): string;
 var dt : TDateTime;
 begin
    dt := mSec / MSecsPerSec / SecsPerDay;
    Result := Format('%d days, %s', [trunc(dt), FormatDateTime('hh:nn:ss', frac(dt))]); //Tage Stunden Minuten Sekunden
 end;

function MSecToTime2(mSec: Int64): string;
var dt : TDateTime;
begin
    dt:= mSec / MSecsPerSec / SecsPerDay;
    Result:= Format('%d days, %s', [Trunc(dt),
    FormatDateTime('hh:nn:ss.z', Frac(dt))]) ; //incl. tausendstel sec
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  aMessungGes : TStopWatch;
begin
  aMessungGes:= TStopWatch.Create;
  aMessungGes.Start;
      Sleep(2500); // Beispiel
  aMessungGes.Stop;
  MM('Zeitmessung Gesamt (s): ' +
    IntToStr(Round(aMessungGes.ElapsedMilliseconds/1000))); //sinnlos !!!
  MM('Zeitmessung Gesamt (ms): ' + IntToStr(aMessungGes.ElapsedMilliseconds));
  MM('Zeitmessung: '+ MSecToTime(aMessungGes.ElapsedMilliseconds));
  MM('Zeitmessung: '+ MSecToTime2(aMessungGes.ElapsedMilliseconds));
end;
Ergebnis:
Zeitmessung Gesamt (s): 2
Zeitmessung Gesamt (ms): 2500
Zeitmessung: 0 days, 00:00:02
Zeitmessung: 0 days, 00:00:02.500

Geändert von hathor (14. Aug 2015 um 22:36 Uhr)
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
439 Beiträge
 
Delphi 12 Athens
 
#4

AW: TStopwatch

  Alt 18. Aug 2015, 09:43
Stimmt, das Result.Reset im Create hatte ich gar nicht so für voll genommen
Wenn ich das .Reset nach dem Create aufrufe funktioniert es wie gewollt.
Danke für die Hilfe

Viele Grüße
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz