Форум: "KOL";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
ВнизТаймер на 10мс. Найти похожие ветки
← →
2expres (2006-12-19 15:05) [0]Не могу получить точный таймер на 10мс. Как можно настроить системный или создать свой таймер???
← →
Vladimir Kladov (2006-12-19 18:20) [1]KOL: NewMMTimer
MCK: TKOLTimer.Multimedia=true
← →
Volterman (2007-07-18 10:47) [2]Не могу разобраться с таймером, помогите!
У меня есть главное окно и цикл обработки сообщений. Типа такого...
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;
← →
=BuckLr= (2007-07-18 13:29) [3]
> как обрабатывать событие OnTimer.
Timer.OnTimer := ... ?
← →
Volterman (2007-07-18 13:33) [4]Хорошо, а какого типа тогда должна быть присваемая процедура или функция, если я не использую объект TForm = objcet (PObj).
Когда присваиваю обычную процедуру, то компилятор выдает ошибку.
← →
Дмитрий К © (2007-07-18 14:32) [5]
> Volterman (18.07.07 13:33) [4]
>
> Хорошо, а какого типа тогда должна быть присваемая процедура
> или функция, если я не использую объект TForm = objcet (PObj).
>
> Когда присваиваю обычную процедуру, то компилятор выдает
> ошибку.
>
TOnEventprocedure DoTimer(Dummy: Pointer; Sender: PObj);
begin
//обработка
end;
...
Timer.OnTimer := TOnEvent(MakeMethod(nil,@DoTimer));
...
+ читать KOLBook http://kolmck.net/docs/KOLBook.rar
← →
=BuckLr= (2007-07-18 15:52) [6]
> + читать KOLBook http://kolmck.net/docs/KOLBook.rar
А можно просто написать .OnTimer и щелкнуть по нему с control. Ну и KOLBook обязательно :)
← →
Volterman (2007-07-18 16:37) [7]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))
в самый раз.
← →
miek © (2007-07-19 20:38) [8]таймер с разрешением 10мс в винде получить нельзя. 15 мс теоретически можно. но на типовом компе будет 25 мс.
← →
Vladimir Kladov (2007-07-19 21:14) [9]Можно. timeBeginPeriod( 1 ). Вот только занятость процессора будет 100% - он только и будет лелать, что этот период пытаться контролировать. Так же не помешает добавить приоритет своему процессу, иначе часики будут задумываться.
← →
miek © (2007-07-22 00:18) [10]>Можно. timeBeginPeriod( 1 ).
Да, если поставить самый высокий приоритет. А кому такое надо?
← →
Vladimir Kladov (2007-07-22 19:52) [11]Не знаю, кому. Я лишь ответил про приципиальную возможность. Высокий приритет очень имеет смысл поставить игрушке типа зумы, чтобы не дёргалась, например :) А так - это вообще нафиг не нужно, если это не видеоигра или эмулятор автомата для видеоигр. Ах да, управление реальным процессом. Нет, не рекомендуется использовать для этого MS Windows в любом случае. Всё равно иногда не успевает, и там где для видеоигры сойдёт с пивом, для управления АЭС может кончиться плохо.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.047 c