Оказывается приватные переменные декларируются в той функции где был создан поток, а код пишет в другую функцию где он должен быть. Я даже понимаю почему
Создает поток:
#pas
procedure TClassFTCG_Tools_8EA8F20.event_doEvent1(var Data:TData; index:word);
var
i5:integer; // сюда пишет все переменные кода который будет в потоке
i6:integer;
begin
thrd := NewThread;
thrd.OnExecute := Execute4;
thrd.AutoFree := False;
thrd.Resume;
end;
А тут выполняет код, но без переменных i он не будет работать
#pas
procedure TClassFTCG_Tools_8EA8F20.Execute4;
begin
for i5 := 1 to 3 do
begin
for i6 := i5 to 3 do
begin
end;
_hi_onEvent(THIFTCG_Tools(FParent).Events[0]);
end;
end;
#hws
func init()
fvar(e,result)
e = code(cgt.el_get_code_name(cgt.el_get_parent_id()))
fvar(old)
lng.decl_priv_var(onTerminated, 'integer')
old = block.select(BLK_PRIV_MTD)
println('thrd:PThread;')
println('function Execute',code(_id_),'(Sender:PThread):Integer;')
block.select(BLK_MTD_BODY)
println ('procedure TClass',e,'.Execute',code(_id_),';')
println ('begin')
event(onExec)
println ('end;')
block.select(old)
end
func doStart()
println('thrd := NewThread;')
println('thrd.OnExecute := Execute',code(_id_),';')
println('thrd.AutoFree := ',FastStop,';')
println('thrd.Resume;')
end
func doPause()
println('thrd.Suspend;')
end
func doResume()
println('thrd.Resume;')
end
func doStop()
println('thrd.Terminate;')
end
func Terminated_()
println (' if (1 = 1) then')
println ('begin')
println ('end;')
end



Поиск
Друзья
Администрация