Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Plzzz. Помогите ламе с таймером.

5.8K
13 октября 2004 года
Fixxxer
19 / / 13.10.2004
Помогите мне раозобраться с таймером. В общем так - мне нужны малые интервалы до 10мс., по умолчанию таймер косячит <60мс, я перебрал кучу компонент - нигде нет точного таймера. На VB когда я пописывал была у меня какая-то библиотека с точным таймером, но увы времена те прошли...
Так вот не просторах Рунета я нашел как сделать таймер точным, привожу дословно:


Для начала описываешь процедуру, которая будет вызываться по сообщению от
таймера :

procedure FNTimeCallBack(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD)
stdcall;
begin
//
// Тело процедуры.
end;

а дальше в программе (например по нажатию кнопки) создаешь Таймер и вешаешь
на него созданную процедуру

uTimerID:=timeSetEvent(10,500,@FNTimeCallBack,100,TIME_PERIODIC);

Подробности смотри в Help.
Hу и в конце убиваешь таймер

timeKillEvent(uTimerID);

И все. Точность этого способа до 1 мсек. минимальный интервал времени можно задавать 1 мсек.


Как же это сделать совсем не понимаю, блин, лама я.
Ну так вот, например, есть такой код:


procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:=1;
Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Time:=Time+1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Caption:=IntToStr(Time);
end;
end.


Как мне его модифицировать??????? HELPPPP!
302
14 октября 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by Fixxxer
Помогите мне раозобраться с таймером.


Там же все уже написано.

Код:
procedure FNTimeCallBack(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD); stdcall;
begin
  while true do
  begin
    // Делаешь то, что тебе надо
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Time := 0;
  uTimerID := timeSetEvent(10,500,@FNTimeCallBack,100,TIME_PERIODIC);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  timeKillEvent(uTimerID);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Caption:=IntToStr(Time);
end;

end.

Тебе остается только найти, в каком модуле описаны функции timeSetEvent и timeKillEvent
5.8K
16 октября 2004 года
Fixxxer
19 / / 13.10.2004
Если б я понимал то, что "уже написано" я б не спрашивал ничего. Я не понимаю код этот просто, ну совсем...
302
16 октября 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by Fixxxer
Если б я понимал то, что "уже написано" я б не спрашивал ничего. Я не понимаю код этот просто, ну совсем...


Что объяснить? Все, с начала и по порядку?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог