------------ Дoбавленo в 08.44:
Неприятности, и вопрос скорее всего к Dilma:
кодогенератор отказывается печатать последний END; Останавливается на последней функции:
#hws
func Terminated_()
println (' if (1 = 1) then')
println ('begin')
return(onTerminated)
println ('end;') // это не печатает!
end
onTerminated зарегистрирован в func init() как:
#hws
lng.decl_priv_var(onTerminated, 'integer')
Если сделать так:
#hws
func Terminated_()
println (' if (1 = 1) then')
println ('begin')
println ('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 (' if (Sender.Terminated = true) then')
println ('begin')
event(onStop)
println ('end;')
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')
return(onTerminated)
println ('end;')
end
Подготовка к сборке проекта...
Генерация кода целевого языка
Компоновка проекта...
Command line: dcc32.exe "C:\Program Files\HiAsm\Elements\delphi\code\Тест Потоков FTCG.dpr" "-UC:\Documents and Settings\1\Рабочий стол\HiFT_Thread\." -Q
Borland Delphi Version 12.0 Copyright (c) 1983,98 Inprise Corporation
C:\Program Files\HiAsm\Elements\delphi\code\WinLayout.pas(159) Warning: Variable 'd' might not have been initialized
C:\Program Files\HiAsm\Elements\delphi\code\WinLayout.pas(176) Warning: Variable 'd' might not have been initialized
C:\Program Files\HiAsm\Elements\delphi\code\WinLayout.pas(40) Hint: Private symbol '_onObjDestroy' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools.pas(59) Hint: Variable 'PrevNeedInit' is declared but never used in 'THIFTCG_Tools.CreateInstance'
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(45) Warning: Return value of function 'TClassFTCG_Tools_8EA8B00.Execute5' might be undefined
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(124) Error: ';' expected but '.' found
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(126) Error: Declaration expected but end of file found
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(14) Hint: Private symbol 'readData' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(15) Hint: Private symbol 'readDataInt' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(16) Hint: Private symbol 'readDataStr' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(17) Hint: Private symbol 'readDataReal' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiMainForm_8E38B90.pas(11) Fatal: Could not compile used unit 'hiFTCG_Tools_8EA8B00.pas'
Сборка завершена.
Генерация кода целевого языка
Компоновка проекта...
Command line: dcc32.exe "C:\Program Files\HiAsm\Elements\delphi\code\Тест Потоков FTCG.dpr" "-UC:\Documents and Settings\1\Рабочий стол\HiFT_Thread\." -Q
Borland Delphi Version 12.0 Copyright (c) 1983,98 Inprise Corporation
C:\Program Files\HiAsm\Elements\delphi\code\WinLayout.pas(159) Warning: Variable 'd' might not have been initialized
C:\Program Files\HiAsm\Elements\delphi\code\WinLayout.pas(176) Warning: Variable 'd' might not have been initialized
C:\Program Files\HiAsm\Elements\delphi\code\WinLayout.pas(40) Hint: Private symbol '_onObjDestroy' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools.pas(59) Hint: Variable 'PrevNeedInit' is declared but never used in 'THIFTCG_Tools.CreateInstance'
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(45) Warning: Return value of function 'TClassFTCG_Tools_8EA8B00.Execute5' might be undefined
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(124) Error: ';' expected but '.' found
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(126) Error: Declaration expected but end of file found
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(14) Hint: Private symbol 'readData' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(15) Hint: Private symbol 'readDataInt' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(16) Hint: Private symbol 'readDataStr' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiFTCG_Tools_8EA8B00.pas(17) Hint: Private symbol 'readDataReal' declared but never used
C:\Program Files\HiAsm\Elements\delphi\code\hiMainForm_8E38B90.pas(11) Fatal: Could not compile used unit 'hiFTCG_Tools_8EA8B00.pas'
Сборка завершена.
------------ Дoбавленo в 12.21:
Еще есть вопросы по потокам:
1. Два потока не могут одновременно записать в один массив, будет ошибка, а прочитать они одновременно смогут?
2. Как поставить защиту на массив(или переменную), чтобы пока один поток в него пишет, второй подождал?



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