Как говорится в вопросе. У меня есть консольное приложение в Delphi, которое содержит переменную TTimer
. То, что я хочу сделать, это назначить обработчик события TTimer.OnTimer
. Я совершенно не знаком с Delphi, я использовал С# и добавление обработчиков событий к событиям совершенно иная. Я выяснил, что не просто назначить процедуру событию как обработчика, вам нужно создать фиктивный класс с помощью метода, который будет обработчиком, а затем назначить этот метод событию. Вот код, который у меня есть:
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
не будет работать, потому что консольные приложения не имеют цикла сообщений. Есть ли способ создать таймер в моем приложении?