Знаю.
Для перевода TIME в другой тип нужно просто использовать стандартный оператор TIME_TO...
Ваша ошибка "..за минуту переваливает и неадыкватные значения вылетают" из-за того, что Вы скорей всего используете переменную для "реального числа миллисекунд" типа WORD, а это не правильно, потому что
Вложение 23871http://www.owen.ru/forum/attachment....3&d=1392751579
О чем идет речь? О какой потере информации?Цитата:
Физически значение времени сохраняется в переменной типа DWORD, выраженное в миллисекундах. Собственное это число и будет преобразовано. При преобразовании в меньший тип, вы рискуете потерять информацию
Пример правильного и не правильного преобразования
Вложение 23872
Результат будет таким
Вложение 23873
Почему так получается? Потому, что 70 секунд это 70 000 мс, а диапазон чисел "помещающихся" в WORD от 0 до 65535 (максимально 1 минута и 5 секунд). Так как 70 000 "не влезают" в WORD, то там остается только младшая часть результата
Это хорошо видно, если переключить отображение переменных в шестнадцатеричный формат
Вложение 23874
Таким образом в переменной "А" от (16#0001 1170)=70 000 осталось всего (16#1170)=4464, а (16#0001 0000)=65536 просто не поместилось.
По этому, если планируете получать "реальное число миллисекунд" для TIME> 65 секунд, то используйте для результата переменную типа DWORD и оператор преобразования TIME_TO_DWORD.

