在Delphi 2010中混淆了TTimeSpan的使用
发布时间:2020-12-15 04:33:34 所属栏目:大数据 来源:网络整理
导读:我在Delphi 2010中尝试了新的Record类型TTimeSpan.但我鼓励一个非常奇怪的问题. assert(TTimeSpan.FromMilliseconds(5000).Milliseconds = 5000); 这个断言没有通过. ‘TTimeSpan.FromMilliseconds(5000).Milliseconds’的值预计为5000,但它为0. 我深入挖掘
我在Delphi 2010中尝试了新的Record类型TTimeSpan.但我鼓励一个非常奇怪的问题.
assert(TTimeSpan.FromMilliseconds(5000).Milliseconds = 5000); 这个断言没有通过. ‘TTimeSpan.FromMilliseconds(5000).Milliseconds’的值预计为5000,但它为0. 我深入挖掘: 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 我的代码解释是正确的,不是吗? 更新:方法GetTotalMilliseconds(双精度)正确实现. 解决方法
您将给定在给定单位中表示的总金额的属性混淆,当您将其分解为其组件(天,小时,分钟,秒,毫秒,刻度)时,属性给出值的一部分.
有了这些,您将获得每个类别的整数余数.因此,毫秒将始终在0到999之间(每秒毫秒数 – 1). 它与DecodeDateTime函数非常类似,可以分解TDateTime. 而对于你想要实现的目标,你肯定需要使用TotalMilliseconds属性,正如TridenT指出的那样,但GetMilliseconds的代码在TimeSpan中确实是正确的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |