Использование интерфейса IgetFunctionText с упрощенной реализацией |
В данном примере вызывающий интерфейс сам реализует функциональность IGetFunctionText.
#include getFunctionText.vih //========================================================= vipInterface test implements IGetFunctionText; //========================================================= interface test; //--------------------------------------------------------- create view as select * from x$files ; //--------------------------------------------------------- screen sc << >> end; //--------------------------------------------------------- function Compile(func_Name : string) : longInt; begin if func_Name='abcd' then begin Message('function source found. compiling...'); // 10 как сущность будет жить только внутри этого интерфейса. vaAddStr(10,'script abcd : word;'); vaAddStr(10,'begin'); vaAddStr(10,' result := 10;'); vaAddStr(10,' Message(''it works =)'');'); vaAddStr(10,'end.'); result := vaCompile(10); vaFreeSource(10); end; end; //--------------------------------------------------------- handleEvent cmInit: { var result : word; vaSetIFunctionText(self); vaExecute(vaGet('abcd'), result); Message('script returned ' + result); }; end; end.