Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Таймер на 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо