Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

"Особенности использования TTimeSpan в Delphi 2010: разбираем TotalMilliseconds и Milliseconds"

Delphi , Синтаксис , Записи и Множества

Особенности использования TTimeSpan в Delphi 2010: разбираем TotalMilliseconds и Milliseconds

В статье рассматривается проблема, с которой столкнулся разработчик при использовании нового типа записи TTimeSpan в Delphi 2010. Основной вопрос заключается в несоответствии ожидаемых и фактических значений свойства Milliseconds. Разберемся подробнее.

Проблема

Разработчик столкнулся с проблемой, когда при использовании функции TTimeSpan.FromMilliseconds(5000) значение свойства Milliseconds ожидаемо было равно 5000, однако в результате получалось значение 0. Это привело к неудаче ассертации.

Исследование

При детальном рассмотрении метода GetMilliseconds, реализованного внутри TTimeSpan, был обнаружен следующий код:

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

Разработчик отметил, что после выполнения деления и взятия остатка от деления на 1000 результат всегда будет находиться в диапазоне от 0 до 999. Это связано с тем, что Milliseconds представляет собой часть миллисекунд, оставшуюся после разбиения общего количества миллисекунд на секунды.

Альтернативный ответ

В качестве альтернативного решения было предложено использовать свойство TotalMilliseconds, которое возвращает общее количество миллисекунд и долей миллисекунды. Пример использования:

assert(TTimeSpan.FromMilliseconds(5000).TotalMilliseconds = 5000);

Это решение подтвердило свою работоспособность, что было отмечено в комментариях.

Подтвержденный ответ

Пользователь запутался в свойствах, которые дают общее количество выражения в определенной единице измерения (TotalMilliseconds), и свойствах, дающих часть значения при его разложении на составляющие (дни, часы, минуты, секунды, миллисекунды, тики). Свойство Milliseconds всегда будет возвращать значение от 0 до 999, так как это число миллисекунд в пределах одной секунды за вычетом единицы.

Заключение

Использование свойства TotalMilliseconds является правильным выбором для получения общего количества миллисекунд. Свойство Milliseconds, хотя и реализовано корректно, предназначено для возврата оставшейся части миллисекунд в пределах секунды.

Этот урок может служить напоминанием о том, что важно внимательно читать документацию и понимать назначение каждого свойства типа данных перед его использованием.

Создано по материалам из источника по ссылке.

В статье обсуждаются проблемы с пониманием и использованием свойств `Milliseconds` и `TotalMilliseconds` в классе `TTimeSpan` языка программирования Delphi, выявленные при работе с версией 2010.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Записи и Множества ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:03:16/0.0054490566253662/1