Ich habe versucht, den neuen Record-Typ TTimeSpan in Delphi 2010. Aber ich ermutige ein sehr seltsames Problem.Confusion von TTimeSpan Verwendung in Delphi 2010
assert(TTimeSpan.FromMilliseconds(5000).Milliseconds = 5000);
Diese Behauptung wird nicht bestanden. Der Wert von 'TTimeSpan.FromMilliseconds (5000) .Milliseconds' wird voraussichtlich 5000 sein, aber es war 0.
ich tiefer graben:
function TTimeSpan.GetMilliseconds: Integer;
begin
Result := Integer((FTicks div TicksPerMillisecond) mod 1000);
end;
FTicks = 50000000
TicksPerMillisecond = 10000
FTick div TicksPerMillisecond = 50000000 div 10000 = 5000
(FTick div TicksPerMillisecond) mod 1000 = 5000 mod 1000 = 0 // I do not understand, why mod 1000
Integer((FTick div TicksPerMillisecond) mod 1000) = Integer(0) = 0
Mein Code Interpretation korrekt ist, ist es nicht?
UPDATE: Die Methode GetTotalMilliseconds (doppelte Genauigkeit) ist korrekt implementiert.
Danke Francois, jetzt verstehe ich die Logik. – stanleyxu2005