Замена TTimer

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Сообщение Сергей Смирнов » 19.11.2005 00:42:35

Может туплю, но не могу сообразить, чем заменить TTimer так, чтобы не было зависимости от LCL. Не обязательно компонент, достаточно просто кода, выполнение которого приводит к периодическому запуску указанной процедуры. Неужто в FCL такого нет? Куда копать-то?

PS: Это всё к тому, чтобы избавиться от LCL-зависимости у FIBL. Периодический запуск процедуры там реально нужен для проверки соединения.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение Гость_SergKam » 19.11.2005 02:19:07

В unix для этого используется сигнал ALARM, его и программе подается сигнал через указаное количество секунд.
А вообще, не пробовал посмотрель реализацию самого компонента TTimer?
Гость_SergKam
 

Сообщение Cтас » 19.11.2005 07:25:20

Используй SetTimer, описание в МСДН.
Cтас
 

Сообщение Сергей Смирнов » 19.11.2005 16:43:10

Э нет, так не пойдёт. Я хочу платформонезависимую реализацию (т.е. желательно средствами rtl, ну или fcl). TTimer в этом смысле мне не помошник, потому как уходит корнями в TWidgetSet, следовательно зависит от платформы и реализован только для того, для чего реализована lcl.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение Sega-Zero » 19.11.2005 19:54:31

Я так понимаю, проги будут писаться, в основном под линь и вынь?
Почему бы не сделать
{$IFDEF WIN32}
//code for win
{$ELSE}
//code for *nix
{$ENDIF}
Sega-Zero
незнакомец
 
Сообщения: 1
Зарегистрирован: 12.11.2005 19:44:23

Re: Замена TTimer

Сообщение shraibikus » 02.12.2010 21:47:04

Cтас писал(а):Используй SetTimer, описание в МСДН.

ок.
В Delphi этот код работает:
Код: Выделить всё
SetTimer(0,1,1000,@OnTimer);

в Lazarus сообщает:
RDM.lpr(24,40) Error: Incompatible type for arg no. 4: Got "<address of procedure;Register>", expected "<procedure variable type of procedure(LongWord, LongWord, LongWord, LongWord);StdCall>"


Как быть, кроме
Код: Выделить всё
{$mode delphi}{$h+}

?
Аватара пользователя
shraibikus
новенький
 
Сообщения: 36
Зарегистрирован: 22.09.2009 16:22:42
Откуда: Столица деревень

Re: Замена TTimer

Сообщение Mr.Smart » 02.12.2010 21:56:20

Функция обработчик должна выглядеть так:
Код: Выделить всё
procedure OnTimerProc(_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD); stdcall;
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Замена TTimer

Сообщение shraibikus » 02.12.2010 22:26:28

Mr.Smart спасибо! =)
Аватара пользователя
shraibikus
новенький
 
Сообщения: 36
Зарегистрирован: 22.09.2009 16:22:42
Откуда: Столица деревень

Re: Замена TTimer

Сообщение Odyssey » 03.12.2010 13:03:18

В рассылке только что пробегал вопрос по TFPTimer.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 6

Рейтинг@Mail.ru