Что возвращает GetTickCount() после переполнения счетчика?

 
Что возвращает GetTickCount() после переполнения счетчика? И происходит ли автоматическое обнуление счетчика?
 
Так как значение DWORD (беззнаковое 32битное число), то счетчик просто переходит через ноль и идет дальше. После ноля идет 1,2,3 ...
 
Подскажите пожалуйста, данная функция не работает в тестере чем ее можно заменить? 
 
У меня недавно была ситуация с переполнением. Функция GetTickCount() возвращала отрицательное целое большое число... Перезагрузил компьютер... Сейчас жалею. Нужно было отследить модуль этого числа, то есть значение после обработки функцией MathAbs(). Если бы оно наращивалось, то можно было бы всегда брать значение MathAbs(GetTickCount()) и не бояться переполнения.
 
Так это, что может быть проще -- если значение меньше предыдущего, сбрасываем подсчет и начинаем заново. Так и делаю.
 
TheXpert:
Так это, что может быть проще -- если значение меньше предыдущего, сбрасываем подсчет и начинаем заново. Так и делаю.
Как это Вы так делаете? Систем ребут что-ли?
 
KimIV:
Как это Вы так делаете? Систем ребут что-ли?
Учитываю в коде возможность переполнения.
 
KimIV:
У меня недавно была ситуация с переполнением. Функция GetTickCount() возвращала отрицательное целое большое число... Перезагрузил компьютер... Сейчас жалею. Нужно было отследить модуль этого числа, то есть значение после обработки функцией MathAbs(). Если бы оно наращивалось, то можно было бы всегда брать значение MathAbs(GetTickCount()) и не бояться переполнения.

Не, модуль наоборот станет уменьшатся (т.е. отрицательное число будет идти в сторону нуля), MQL ведь воспринимает его именно как signed int, а не DWORD.  Поэтому одним лишь модулем тут не отделаешься. 

 
Meat:

Не, модуль наоборот станет уменьшатся (т.е. отрицательное число будет идти в сторону нуля). Поэтому одним лишь модулем тут не отделаешься. 

Так наоборот проще, имхо

 
KimIV:
У меня недавно была ситуация с переполнением. Функция GetTickCount() возвращала отрицательное целое большое число... Перезагрузил компьютер... Сейчас жалею. Нужно было отследить модуль этого числа, то есть значение после обработки функцией MathAbs(). Если бы оно наращивалось, то можно было бы всегда брать значение MathAbs(GetTickCount()) и не бояться переполнения.

GetTickCount() оболочка этой функции WinAPI. Она возвращает тип DWORD. Т.е. в MQL4 она "переполняется", как бы на полпути. Из-за того, что в MQL4 нет беззнаковых типов.

Можно разбить INT на две части с помощью побитовых операций. Младший WORD и старший WORD. Они при своём переполнении не будут переполнять свой INT. Отслеживать обе части.

 

Проще наверное, просто считать в дополнительном коде...

PS Большое отрицательное число - это еще не переполнение, просто в старший разрад попала единичка. То есть до переполнения еще полпути.

Причина обращения: