metaclass: (Default)
[personal profile] metaclass
Откопал только что в проге сабж. Совершенно безумный.

Есть у меня в проге отображение прогресса для длинных операций. Чтобы его постоянно не обновлять, я вывожу изменения только через каждые 0.3 секунды. А проверяю это дело, использую функцию GetTickCount, сохраняя ее предыдущее значение и сравнивая с текущим. Если разница >300 то прогресс обновляется.

Оказалось, что комп на работе не выключался столько, что GetTickCount стал меньше нуля (использовался integer). И сей алгоритм сломался, т.е. прогресс перестал показываться вообще. Дома показывается, тут нет.

Date: 2007-07-11 12:19 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Хехе, у меня там было более хитро. tstart назначался не всегда, в чем собственно и баг. Когда он был 0 и GetTickCount>0 - все работало. А когда GetTickCount cтал меньше нуля, все сломалось :)

Date: 2007-07-11 12:34 pm (UTC)
From: [identity profile] eu3eu.livejournal.com
Лично я стараюсь не пользовать типы со знаком там, где в этом нет надобности - в индексах, в счётчиках на инкремент.

Date: 2007-07-11 12:36 pm (UTC)
From: [identity profile] eu3eu.livejournal.com
А GetTickCount возвращает DWORD (unsigned long), зачем было делать каст в int?

Date: 2007-07-11 12:41 pm (UTC)
From: [identity profile] metaclass.livejournal.com
а, осталось от каких-то дико стародавних пор

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 8th, 2025 12:59 am
Powered by Dreamwidth Studios