Знаю.
Для перевода TIME в другой тип нужно просто использовать стандартный оператор TIME_TO...
Ваша ошибка "..за минуту переваливает и неадыкватные значения вылетают" из-за того, что Вы скорей всего используете переменную для "реального числа миллисекунд" типа WORD, а это не правильно, потому что
Захват-3.png
О чем идет речь? О какой потере информации?Физически значение времени сохраняется в переменной типа DWORD, выраженное в миллисекундах. Собственное это число и будет преобразовано. При преобразовании в меньший тип, вы рискуете потерять информацию
Пример правильного и не правильного преобразования
Захват-2.png
Результат будет таким
Захват-1.png
Почему так получается? Потому, что 70 секунд это 70 000 мс, а диапазон чисел "помещающихся" в WORD от 0 до 65535 (максимально 1 минута и 5 секунд). Так как 70 000 "не влезают" в WORD, то там остается только младшая часть результата
Это хорошо видно, если переключить отображение переменных в шестнадцатеричный формат
Захват-4.png
Таким образом в переменной "А" от (16#0001 1170)=70 000 осталось всего (16#1170)=4464, а (16#0001 0000)=65536 просто не поместилось.
По этому, если планируете получать "реальное число миллисекунд" для TIME> 65 секунд, то используйте для результата переменную типа DWORD и оператор преобразования TIME_TO_DWORD.



Ответить с цитированием