Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Abu Antos' ([info]syarzhuk)
@ 2007-08-06 16:05:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:code

Граблі strike back
Why would this code

StartDelay := GetTickCount();

repeat
   Application.ProcessMessages;
until (abs((GetTickCount() - StartDelay))) >= PauseLength;

suddenly stop working? Because GetTickCount returns an unsigned int, and StartDelay was declared as LongInt (signed) and the PC that used to reboot several times a day now ran for months.... Fix - redeclare StartDelay as Longword.


(Добавить комментарий)


[info]goshen@lj
2007-08-06 17:05 (ссылка)
главное, шоб не double.

(Ответить)


[info]ygam@lj
2007-08-06 17:21 (ссылка)
Pascal?

(Ответить) (Ветвь дискуссии)


[info]syarzhuk@lj
2007-08-06 17:28 (ссылка)
Object Pascal, aka Delphi :)

I'm adding a feature to a program I wrote for MIT several years ago. This entry was about the same program.

(Ответить) (Уровень выше)


[info]xpeh1@lj
2007-08-06 20:50 (ссылка)
Фууу, какой ужасный немайрософтовский язык... Вот если бы написать на VB, и вставить On Error Resume Next, то ничего подобного бы не случилось;)

(Ответить) (Ветвь дискуссии)


[info]syarzhuk@lj
2007-08-07 02:45 (ссылка)
VB6 doesn't have (http://msdn2.microsoft.com/en-us/library/7f5ztkz3(VS.80).aspx) an unsigned Int32 data type :)

(Ответить) (Уровень выше)


[info]larisaka@lj
2007-08-17 00:52 (ссылка)
(мрачно) На VB оно просто начинает отрицательные числа возвращать из GetTickCount-а. Тоже проходили эти грабли.

(Ответить) (Уровень выше)