| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > [C++ WinAPI]Как перевести миллисекунды в SYSTEMTIME? |
| Автор: Alca 15.6.2009, 11:36 | ||||
Как перевести миллисекунды в SYSTEMTIME?
Не влазит в переменную ullMilliSec столько миллисекунд.... Что делать? |
| Автор: NiJazz 15.6.2009, 11:57 | ||
Получаешь кол-во миллисекунд с 01.01.1970, кажется. С этой величиной удобнее всего работать, если нужно считать время, прошедшее с некого момента. |
| Автор: Alca 15.6.2009, 12:28 | ||
Мне миллисекунды надо в SYSTEMTIME перегнать, а не считать разницу.
|
| Автор: NiJazz 15.6.2009, 13:26 |
| Смотрим http://support.microsoft.com/kb/167296 |
| Автор: Alca 15.6.2009, 13:35 |
| Спасибо, буду разбираться... |
| Автор: Alca 15.6.2009, 15:27 | ||||||
586, спасибо. Ворниг ушел, но результат у меня получаеться не правильный.
Где ошибка? Должно быть:
|
| Автор: 586 15.6.2009, 15:50 | ||
|
| Автор: korbian 15.6.2009, 15:58 | ||
Alca,
Добавлено через 32 секунды |
| Автор: Alca 15.6.2009, 16:06 |
| Спасибо!!! Вроде пашет. |
| Автор: GremlinProg 15.6.2009, 16:07 |
| Перемещено в "С/C++ общие вопросы" |
| Автор: Alca 15.6.2009, 16:17 | ||
А чего с этим ворнингом делать?
Кастануть его что ли? Добавлено через 42 секунды Поставил всем по кресту.... |
| Автор: 586 15.6.2009, 17:02 | ||||||
Миллисекунд не может быть более 999; секунд, минут не может быть более 59; часов не более 23 дней не более 29 (30 дней в месяце) месяцев не более 11 Чтобы возникло переполнение, нужно число, более 65535. Следовательно, ошибки нет, и варнинг можно проигнорить.
|
| Автор: Alca 15.6.2009, 17:06 |
| 586, ты волшебник |
| Автор: GremlinProg 15.6.2009, 19:44 | ||
предупреждения прикрывают в крайних случаях, когда нет возможности его обойти в данном случае, нужно просто явно "обрезать" значение:
любой, кто будет читать эту конструкцию поймет ее как надо, в том числе и оптимизатор, который делает вывод, что старшие биты переменной не используются "плавающие" вычисления, в таком случае, могут быть оптимизированы, если потребуется, например: "длинная" операция 64-битного сложения может быть заменена на "короткую" - 32-битную и т.п. прикрывая такое предупреждение, оптимизатор этого сделать не сможет, при всем желании и возможностях |
| Автор: Alca 15.6.2009, 21:19 |
| ясненько, значит закастить |
| Автор: 586 15.6.2009, 21:50 | ||||||
На оптимизатор это никак не влияет. И на машинный код. Компилятор автоматически конвертирует ULONGLONG в WORD, и предупреждает, что старшая часть переменной теряется.
В данном случае было много предупреждений, чтобы не запутывать код приведениями типов, был отключен варнинг в пределах одной функции. |
| Автор: 586 15.6.2009, 22:09 |
| Правда, на gcc и других компиляторах с блокировкой варнингов будет проблема. В данном случае нужно приводить типы. |