Использование VCL TTimer в консольном приложении Delphi

Как говорится в теме вопроса. У меня есть консольное приложение в Delphi, которое содержит переменную TTimer. Я хочу назначить обработчик события TTimer.OnTimer. Я совершенно новичок в Delphi, я использовал C #, и добавление обработчиков событий к событиям совершенно другое. Я обнаружил, что нельзя просто назначить процедуру событию в качестве обработчика, вам нужно создать фиктивный класс с методом, который будет обработчиком, а затем назначить этот метод событию. Вот код, который у меня сейчас есть:

program TimerTest;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  extctrls;

type
  TEventHandlers = class
    procedure OnTimerTick(Sender : TObject);
  end;

var
  Timer : TTimer;
  EventHandlers : TEventHandlers;


procedure TEventHandlers.OnTimerTick(Sender : TObject);
begin
  writeln('Hello from TimerTick event');
end;

var
  dummy:string;
begin
  EventHandlers := TEventHandlers.Create();
  Timer := TTimer.Create(nil);
  Timer.Enabled := false;
  Timer.Interval := 1000;
  Timer.OnTimer := EventHandlers.OnTimerTick;
  Timer.Enabled := true;
  readln(dummy);
end.

Мне кажется правильно, но почему-то не работает.

РЕДАКТИРОВАТЬ
Похоже, что компонент TTimerне будет работать, потому что консольные приложения не имеют цикла обработки сообщений. Есть ли способ создать таймер в моем приложении?

11
задан Arioch 'The 20 August 2012 в 10:29
поделиться