Использование интерфейса 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.