Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];

Вниз

невизуальные компоненты   Найти похожие ветки 

 
liveD ©   (2009-07-09 20:14) [0]

Здравствуйте.
у меня вопрос: Создаю консольное приложение в котором создаю таймер.
Как мне создать обработчик событий 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.


 
oldman ©   (2009-07-09 20:26) [1]


> mytimer.Ontimer:=mytimerOnTimer; не работает.


При этом молчит как партизан?


 
liveD ©   (2009-07-09 20:32) [2]

Создаю процедуру:

...
uses
 Windows,ExtCtrls;
....

procedure mytimerOnTimer;
begin
// a+b например
end;

и пишу в теле консольного приложения после описания свойств таймера:

mytimer.Ontimer:=mytimerOnTimer;

[Error] Project1.dpr(27): Incompatible types: "method pointer and regular procedure"


 
sniknik ©   (2009-07-09 20:32) [3]

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

кстати нафига консольному приложению таймер?


 
sniknik ©   (2009-07-09 20:34) [4]

> method pointer and regular procedure
все правильно, процедура это не метод класса.


 
liveD ©   (2009-07-09 20:40) [5]

А что мне тогда вобще делать с консольным приложением, если ему ничего не надо? :-( Поставлю инди и буду почту отправлять периодически. Пишу програмку по сбору данных. А потом попробую из этого всего службу сделать. :-)


 
liveD ©   (2009-07-09 20:42) [6]


> все правильно, процедура это не метод класса.

И как мне создать этот метод?
А в оконном приложении если в ран тайм создаю кнопку и на онклик присваиваю также само простую процедуру то работает.


 
RWolf ©   (2009-07-09 20:48) [7]

Консоль-то тут зачем?
Надо сразу службу и делать; в IDE для них специальный мастер есть; и будет, куда таймер положить.


 
sniknik ©   (2009-07-09 20:49) [8]

> А потом попробую из этого всего службу сделать. :-)
как то ты странно работу распределил сначала сложное, при том что не умеешь, после простое, когда научишься...

службу на порядок проще сделать чем то что ты тут "нарисовал" (угадывается). вот тот же таймер, положил компонент на "форму"  службы, прописал в екзекюте цикл обработки сообщений, все готово. остальное "автсгенерированно".  а в "чистой" консоли придется "попарится".

> И как мне создать этот метод?
проще всего сделать класс, и использовать его метод, или можно "разобрать" метод и составить его самому, там всего 2 указателя в структуре.


 
liveD ©   (2009-07-09 20:51) [9]

Будет куда кидать, но я хотел бы разобраться с этой проблемой, а вдруг прийдется еще создавать обработчики событий.


 
Palladin ©   (2009-07-09 20:55) [10]


> но я хотел бы разобраться с этой проблемой,

с какой именно?


 
liveD ©   (2009-07-09 21:02) [11]

как всетаки сделать обработчик события


 
liveD ©   (2009-07-09 21:04) [12]


> проще всего сделать класс, и использовать его метод, или
> можно "разобрать" метод и составить его самому, там всего
> 2 указателя в структуре.

Обьясните дураку пожалуйста как это сделать, бо я уже мылом веревку начинаю тереть :-(


 
Palladin ©   (2009-07-09 21:05) [13]

сделать класс, сделать у каласса метод и назначить свойству это метод


 
Palladin ©   (2009-07-09 21:05) [14]


> liveD ©   (09.07.09 21:04) [12]

продолжай тереть... очень помогает... сообществу


 
liveD ©   (2009-07-09 21:09) [15]

Type TmytimerOnTimer=Class

  procedure mytimerOnTimer;
 end;

Правильно? Ошибок не выдает в этом месте, а как сделать у класса метод?


 
liveD ©   (2009-07-09 21:11) [16]

Та отож. Небылоб меня - у вас бы голова хоть не болела :-)


 
RWolf ©   (2009-07-09 21:13) [17]

Пока в приложении нет message loop — в нём не будет ни дельфовских событий, ни обработчиков.
К наличию/отсутствию консольного вывода в программе это не имеет отношения.


 
Сергей М. ©   (2009-07-09 22:09) [18]


> как сделать у класса метод?


Хм ..
А сейчас, в [15], интересно, ты ЧЕМ занимался, если не тем самым ?

"Деланье у класса метода" сводится к двум "деланьям":

1.Объявление метода
2, Реализация метода.

В [15] ты объявил метод.
А где же его реализация ?


 
sniknik ©   (2009-07-09 23:08) [19]

> В [15] ты объявил метод.
кстати неправильно.

почему бы не посмотреть как его генерит IDE при разработке нормального приложения? тебе вообще много из "нормального" повторить придется, почему бы сразу не начать смотреть как там сделано?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
1-1215107303
Zheksik
2008-07-03 21:48
2009.09.13
Как провести линию на компоненте фигура(Shape)?


15-1247455425
vajo
2009-07-13 07:23
2009.09.13
Что может означать длинный писк материнки?


15-1247517154
Юрий
2009-07-14 00:32
2009.09.13
С днем рождения ! 14 июля 2009 вторник


15-1248038747
Германн
2009-07-20 01:25
2009.09.13
Если кто знает что-то подобное?


3-1227089155
Sesh
2008-11-19 13:05
2009.09.13
OracleLob сохранить в текстовый файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский