Probé el nuevo tipo de registro TTimeSpan en Delphi 2010. Pero sugiero un problema muy extraño.Confusión del uso de TTimeSpan en Delphi 2010
assert(TTimeSpan.FromMilliseconds(5000).Milliseconds = 5000);
Esta afirmación no pasa. Se espera que el valor de 'TTimeSpan.FromMilliseconds (5000) .Milliseconds' a ser 5000, pero fue 0.
cavo más profundo:
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
Mi interpretación código es correcto, ¿verdad?
ACTUALIZACIÓN: El método GetTotalMilliseconds (precisión doble) se implementa correctamente.
Gracias Francois, ahora entiendo la lógica. – stanleyxu2005