![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
невизуальные компоненты [D6, XP]
liveD © (2009-07-09 20:14:00)Здравствуйте.
у меня вопрос: Создаю консольное приложение в котором создаю таймер.
Как мне создать обработчик событий mytimer.Ontimer?
mytimer.Ontimer:=mytimerOnTimer; не работает.
Помогите плиз.
Текст моей програмки ниже. Зарание большое спасибо.
program Project1;
{$APPTYPE CONSOLE}
uses
Windows,ExtCtrls;
var
mytimer: TTimer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
mytimer:=TTimer.Create(nil);
mytimer.Enabled:=true;
mytimer.Interval:=10000;
end.
sniknik (2009-07-09 23:08:00) [1]> В [15] ты объявил метод.
кстати неправильно.
почему бы не посмотреть как его генерит IDE при разработке нормального приложения? тебе вообще много из "нормального" повторить придется, почему бы сразу не начать смотреть как там сделано?
Сергей М. (2009-07-09 22:09:00) [2]
> как сделать у класса метод?
Хм ..
А сейчас, в [15], интересно, ты ЧЕМ занимался, если не тем самым ?
"Деланье у класса метода" сводится к двум "деланьям":
1.Объявление метода
2, Реализация метода.
В [15] ты объявил метод.
А где же его реализация ?
RWolf (2009-07-09 21:13:00) [3]Пока в приложении нет message loop — в нём не будет ни дельфовских событий, ни обработчиков.
К наличию/отсутствию консольного вывода в программе это не имеет отношения.
liveD (2009-07-09 21:11:00) [4]Та отож. Небылоб меня - у вас бы голова хоть не болела :-)
liveD (2009-07-09 21:09:00) [5]Type TmytimerOnTimer=Class
procedure mytimerOnTimer;
end;
Правильно? Ошибок не выдает в этом месте, а как сделать у класса метод?
Palladin (2009-07-09 21:05:00) [6]
> liveD © (09.07.09 21:04) [12]
продолжай тереть... очень помогает... сообществу
Palladin (2009-07-09 21:05:00) [7]сделать класс, сделать у каласса метод и назначить свойству это метод
liveD (2009-07-09 21:04:00) [8]
> проще всего сделать класс, и использовать его метод, или
> можно "разобрать" метод и составить его самому, там всего
> 2 указателя в структуре.
Обьясните дураку пожалуйста как это сделать, бо я уже мылом веревку начинаю тереть :-(
liveD (2009-07-09 21:02:00) [9]как всетаки сделать обработчик события
Palladin (2009-07-09 20:55:00) [10]
> но я хотел бы разобраться с этой проблемой,
с какой именно?
liveD (2009-07-09 20:51:00) [11]Будет куда кидать, но я хотел бы разобраться с этой проблемой, а вдруг прийдется еще создавать обработчики событий.
sniknik (2009-07-09 20:49:00) [12]> А потом попробую из этого всего службу сделать. :-)
как то ты странно работу распределил сначала сложное, при том что не умеешь, после простое, когда научишься...
службу на порядок проще сделать чем то что ты тут "нарисовал" (угадывается). вот тот же таймер, положил компонент на "форму" службы, прописал в екзекюте цикл обработки сообщений, все готово. остальное "автсгенерированно". а в "чистой" консоли придется "попарится".
> И как мне создать этот метод?
проще всего сделать класс, и использовать его метод, или можно "разобрать" метод и составить его самому, там всего 2 указателя в структуре.
RWolf (2009-07-09 20:48:00) [13]Консоль-то тут зачем?
Надо сразу службу и делать; в IDE для них специальный мастер есть; и будет, куда таймер положить.
liveD (2009-07-09 20:42:00) [14]
> все правильно, процедура это не метод класса.
И как мне создать этот метод?
А в оконном приложении если в ран тайм создаю кнопку и на онклик присваиваю также само простую процедуру то работает.
liveD (2009-07-09 20:40:00) [15]А что мне тогда вобще делать с консольным приложением, если ему ничего не надо? :-( Поставлю инди и буду почту отправлять периодически. Пишу програмку по сбору данных. А потом попробую из этого всего службу сделать. :-)
sniknik (2009-07-09 20:34:00) [16]> method pointer and regular procedure
все правильно, процедура это не метод класса.
sniknik (2009-07-09 20:32:00) [17]с чего это оно не работает? работает, создается, присваиваются параметры и завершается, потому что больше ничего нет, ни цикла обработки сообщений, ни процедуры обработки от таймера, ничего в общем, а все, что написано то отрабатывает.
кстати нафига консольному приложению таймер?
liveD (2009-07-09 20:32:00) [18]Создаю процедуру:
...
uses
Windows,ExtCtrls;
....
procedure mytimerOnTimer;
begin
// a+b например
end;
и пишу в теле консольного приложения после описания свойств таймера:
mytimer.Ontimer:=mytimerOnTimer;
[Error] Project1.dpr(27): Incompatible types: 'method pointer and regular procedure'
oldman (2009-07-09 20:26:00) [19]
> mytimer.Ontimer:=mytimerOnTimer; не работает.
При этом молчит как партизан?