![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Таймер на 10мс. [Delphi]
2expres © (2006-12-19 15:05:00)Не могу получить точный таймер на 10мс. Как можно настроить системный или создать свой таймер???
Vladimir Kladov (2007-07-22 19:52:00) [1]Не знаю, кому. Я лишь ответил про приципиальную возможность. Высокий приритет очень имеет смысл поставить игрушке типа зумы, чтобы не дёргалась, например :) А так - это вообще нафиг не нужно, если это не видеоигра или эмулятор автомата для видеоигр. Ах да, управление реальным процессом. Нет, не рекомендуется использовать для этого MS Windows в любом случае. Всё равно иногда не успевает, и там где для видеоигры сойдёт с пивом, для управления АЭС может кончиться плохо.
miek (2007-07-22 00:18:00) [2]>Можно. timeBeginPeriod( 1 ).
Да, если поставить самый высокий приоритет. А кому такое надо?
Vladimir Kladov (2007-07-19 21:14:00) [3]Можно. timeBeginPeriod( 1 ). Вот только занятость процессора будет 100% - он только и будет лелать, что этот период пытаться контролировать. Так же не помешает добавить приоритет своему процессу, иначе часики будут задумываться.
miek (2007-07-19 20:38:00) [4]таймер с разрешением 10мс в винде получить нельзя. 15 мс теоретически можно. но на типовом компе будет 25 мс.
Volterman (2007-07-18 16:37:00) [5]2Дмитрий К:Сенкс, помогло. Как раз то что меня интересовало.
Я поначалу по другому сделал:
type
TF = objcet (PObj)
Timer1: PTimer;
procedure DoTimer(Sender: PObj);
end;
var
F: TF;
begin
F.Timer1:=NewTimer(1000);
F.Timer1.Enabled:=True;
F.Timer.OnTime:=F.DoTimer;
end.
Пробовал имитировать объект TForm.
Так как формы из MCK я не использую, то это
Timer.OnTimer := TOnEvent(MakeMethod(nil,@DoTimer))
в самый раз.
=BuckLr= (2007-07-18 15:52:00) [6]
> + читать KOLBook http://kolmck.net/docs/KOLBook.rar
А можно просто написать .OnTimer и щелкнуть по нему с control. Ну и KOLBook обязательно :)
Дмитрий К (2007-07-18 14:32:00) [7]
> Volterman (18.07.07 13:33) [4]
>
> Хорошо, а какого типа тогда должна быть присваемая процедура
> или функция, если я не использую объект TForm = objcet (PObj).
>
> Когда присваиваю обычную процедуру, то компилятор выдает
> ошибку.
>
TOnEvent
procedure DoTimer(Dummy: Pointer; Sender: PObj);
begin
//обработка
end;
...
Timer.OnTimer := TOnEvent(MakeMethod(nil,@DoTimer));
...
+ читать KOLBook http://kolmck.net/docs/KOLBook.rar
Volterman (2007-07-18 13:33:00) [8]Хорошо, а какого типа тогда должна быть присваемая процедура или функция, если я не использую объект TForm = objcet (PObj).
Когда присваиваю обычную процедуру, то компилятор выдает ошибку.
=BuckLr= (2007-07-18 13:29:00) [9]
> как обрабатывать событие OnTimer.
Timer.OnTimer := ... ?
Volterman (2007-07-18 10:47:00) [10]Не могу разобраться с таймером, помогите!
У меня есть главное окно и цикл обработки сообщений. Типа такого...
while (msg.message <> WM_QUIT) do
begin
if PeekMessage(msg, 0, 0, 0, PM_REMOVE) then
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
<Действия которые выполняются постоянно>
end;
Надо с помощью таймера имитировать многозадачность (например что-то выполнять каждую 1 секунду, что-то раз в 10 секунд).
Может кто-то приведет готовый пример. Я что-то не совсем понимаю как обрабатывать событие OnTimer.
Timer1:=NewTimer(1000);
Timer1.Enabled:=True;
Timer2:=NewTimer(10000);
Timer2.Enabled:=True;
Vladimir Kladov (2006-12-19 18:20:00) [11]KOL: NewMMTimer
MCK: TKOLTimer.Multimedia=true