AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Unterschied TStopwatch.Elapsed.Milliseconds und TStopwatch.ElapsedMilliseconds
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschied TStopwatch.Elapsed.Milliseconds und TStopwatch.ElapsedMilliseconds

Ein Thema von TurboMagic · begonnen am 24. Nov 2022 · letzter Beitrag vom 24. Nov 2022
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#1

Unterschied TStopwatch.Elapsed.Milliseconds und TStopwatch.ElapsedMilliseconds

  Alt 24. Nov 2022, 15:58
Hallo,

in einem D10.4.2 Programm liefern TStopwatch.Elapsed.Milliseconds und
TStopwatch.ElapsedMilliseconds an der selben Stelle im Programm unterschiedliche Werte.

Wenn man da rein schaut, läuft in der RTL auch untershciedlcher Code, aber sollten die
nicht eigentlich von der Definition her dasselbe liefern?

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#2

AW: Unterschied TStopwatch.Elapsed.Milliseconds und TStopwatch.ElapsedMilliseconds

  Alt 24. Nov 2022, 18:07
Interessant, ist mir noch nie aufgefallen, ich habe immer ElapsedMilliseconds genutzt.
Ich habe hier nur D11, ist aber bestimmt gleich geblieben

Identisch sind die Funktionen nicht, bei (1) ist noch ein mod 1000 drin und gibt anscheinend nur den Rest der Millisekunden vom jeweiligen Zeitobjekt zurück.
Wobei (2) mit ElapsedMilliseconds die kompletten ms zurückgibt, ohne Begrenzung.

Delphi-Quellcode:

(1)
     LStp.Elapsed.Milliseconds;

function TStopwatch.GetElapsed: TTimeSpan;
begin
  Result := TTimeSpan.Create(GetElapsedDateTimeTicks);
end;

function TTimeSpan.GetMilliseconds: Integer;
begin
  Result := Integer((FTicks div TicksPerMillisecond) mod 1000);
end;


(2)
     LStp.ElapsedMilliseconds;

function TStopwatch.GetElapsedMilliseconds: Int64;
begin
  Result := GetElapsedDateTimeTicks div TTimeSpan.TicksPerMillisecond;
end;

  public const
    TicksPerMillisecond = 10000;

function TStopwatch.GetElapsedDateTimeTicks: Int64;
begin
  Result := ElapsedTicks;
  if FIsHighResolution then
    Result := Trunc(Result * TickFrequency);
end;
Wenn Du was Ähnliches haben willst hilft vielleicht das Elapsed.TotalMilliseconds, ist aber dann ein Double.
Delphi-Quellcode:
function TTimeSpan.GetTotalMilliseconds: Double;
begin
  Result := MillisecondsPerTick;
  Result := FTicks * Result;
  if Result > MaxMilliseconds then
    Result := MaxMilliseconds
  else if Result < MinMilliseconds then
    Result := MinMilliseconds;
end;

Geändert von Rollo62 (24. Nov 2022 um 18:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Unterschied TStopwatch.Elapsed.Milliseconds und TStopwatch.ElapsedMilliseconds

  Alt 24. Nov 2022, 18:21
Das Eine gibt alle Millisekunden über die gesamte Dauer an (Millisekunden seit)
das Andere den "Millisekunden"-Anteil der Zeitspanne, siehe das mod, neben den Sekunden, Minuten, Stunden (also das zzz aus hh:mm:ss.zzz).
$2B or not $2B

Geändert von himitsu (24. Nov 2022 um 18:26 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:56 Uhr.
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