Код: Выделить всё
var
job: TTimer;
procedure jobTimer;
begin
{some code here}
end;
begin
job := TTimer.Create(nil);
job.Interval := 1000;
job.OnTimer := jobTimer;
end;
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Код: Выделить всё
var
job: TTimer;
procedure jobTimer;
begin
{some code here}
end;
begin
job := TTimer.Create(nil);
job.Interval := 1000;
job.OnTimer := jobTimer;
end;
Это ошибка даже не связанная с наличием или отсутствием окон. Это ошибка на этапе компиляции.Incompatible types: method pointer and regular procedure"
Код: Выделить всё
procedure TSomeObject.jobTimer;
begin
{some code here}
end;
...
job.OnTimer := SomeObject1.jobTimer;
//разумеется SomeObject1 должен быть типа TSomeObject и быть инициализирован (Created)
Код: Выделить всё
type
timerevent = class(TObject)
Public
procedure MTTimer(Sender: TObject);
procedure QRTimer(Sender: TObject);
procedure saverTimer(Sender: TObject);
end;
procedure timerevent.savertimer(Sender: TObject);
begin
lalala
end;
procedure timerevent.MTTimer(Sender: TObject);
lalala
procedure timerevent.QRTimer(Sender: TObject);
lalala
//Main
var
tmev: timerevent;
job, saver: TTimer;
tmev := timerevent.Create;
job := TTimer.Create(nil);
If lowercase(ddesrv) = 'mt' then job.OnTimer := tmev.MTTimer;
If lowercase(ddesrv) = 'qr' then job.OnTimer := tmev.QRTimer;
saver := TTimer.Create(nil);
saver.OnTimer := tmev.saverTimer;
While (True) do
begin
Application.ProcessMessages;
sleep(1000);
end;
Совершенно верно, забыл сказать самое главноеIncompatible types: method pointer and regular procedure"
Это ошибка даже не связанная с наличием или отсутствием окон. Это ошибка на этапе компиляции.
OnTimer имеет тип procedure of object (т.е. МЕТОД) это совсем не то, что указатель на процедуру.