Вверх ↑
Этот топик читают: Гость
Ответов: 54
Рейтинг: 1
#1: 2012-07-17 20:18:46 ЛС | профиль | цитата
Доброго времени суток!
Я тут делал очередную программу и заметил такую странность компонента Таймер:
Если установить значение интервала 1, то таймер будет работать также, как и при интервале 10!
Скажите, это только у меня так? И как это можно исправить?
карма: 1

0
Ответов: 1731
Рейтинг: 68
#2: 2012-07-17 20:23:19 ЛС | профиль | цитата
Это так и должно быть.
карма: 1

0
Ответов: 1173
Рейтинг: 49
#3: 2012-07-17 20:23:27 ЛС | профиль | цитата
BogdashkaM, читаем в справке про Timer. А решение -- юзать MMTimer.
Умные люди в справке писал(а):
Одной из особенностью работы таймеров в ОС Windows является то, что на практике события не смогут приходить чаще, чем с задержкой в 20-30 мс. Поэтому если для вашего приложения это принципиально используйте элемент Thread или MMTimer

карма: 0

0
Ответов: 1731
Рейтинг: 68
#4: 2012-07-17 20:27:31 ЛС | профиль | цитата
Пример(SHA)

Add(Label,7195354,252,77)
{
Left=40
Top=20
}
Add(Label,13210018,252,140)
{
Left=40
Top=40
}
Add(Timer,3828094,140,77)
{
Interval=10
link(onTimer,7900317:doNext,[])
}
Add(Timer,1982090,140,140)
{
Interval=1
link(onTimer,6101792:doNext,[])
}
Add(CounterEx,7900317,196,77)
{
Max=99999999
link(onNext,7195354:doText,[])
}
Add(CounterEx,6101792,196,140)
{
Max=99999999
link(onNext,13210018:doText,[])
}
Add(Label,13343840,252,203)
{
Left=40
Top=60
}
Add(CounterEx,290979,196,203)
{
Max=99999999
link(onNext,13343840:doText,[])
}
Add(MMTimer,3865837,140,203)
{
Interval=1
link(onTimer,290979:doNext,[])
}
Add(Thread,14412244,140,266)
{
Delay=1
link(onExec,7266008:doNext,[])
}
Add(Label,15288220,252,266)
{
Left=40
Top=80
}
Add(CounterEx,7266008,196,266)
{
Max=99999999
link(onNext,15288220:doText,[])
}

Исправил*
карма: 1

0
Ответов: 8930
Рейтинг: 823
#5: 2012-07-17 21:07:39 ЛС | профиль | цитата
BogdashkaM, более того, у таймера шаг делений 1/64 секунды (15,625 миллисекунд), а не одна миллисекунда, это всегда надо иметь ввиду.
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#6: 2012-07-18 10:29:09 ЛС | профиль | цитата
Леонид, и более того, применять таймер с интервалом <50 - получить непредсказуемый результат.
code_28502.txt
Устанавливаем интервал, жмем на кнопку несколько раз и смотрим на результат.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_28502.txt [1.3KB] [100]
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)