Зацикливание в скрипте?
берем демку которая идет со скриптом
кидаем кнопку на клик вешаем обработчик который ниже.
ставим точку остановки на получения значения.
Запускаем и смотрим.
procedure TForm1.Button1Click(Sender: TObject);
var s :string;
res :Variant;
begin
s:= 'function __f__: Variant;const A = 10; B = 20; begin Result := A + B end; begin end.';
Memo.Lines.Text := s;
RunBtnClick(Nil);
Res := fsScript1.FindLocal('__f__').Value;
end;
как выполнить функцию (в скрипте) и получить значение этой функции в коде ??
пытаюсь по аналогии сделать
value:= 'function __f__: Variant;const A = 10; B = 20; begin Result := A + B end;
function Get_Func(const value: String): Variant;
var
SaveEvent: TfsRunLineEvent;
s:string;
begin
Result := Null;
fsScript1.ClearVariables;
fsScript1.Lines.Text := Value;
fsScript1.Parent := fsGlobalUnit;
SaveEvent := fsScript1.OnRunLine;
if fsScript1.Compile then
Result := fsScript1.FindLocal('__f__').Value;
fsScript1.OnRunLine := SaveEvent;
end;
Эфект тото же.
причем строка без кода выполняется нормально.
Что я делаю не так??
кидаем кнопку на клик вешаем обработчик который ниже.
ставим точку остановки на получения значения.
Запускаем и смотрим.
procedure TForm1.Button1Click(Sender: TObject);
var s :string;
res :Variant;
begin
s:= 'function __f__: Variant;const A = 10; B = 20; begin Result := A + B end; begin end.';
Memo.Lines.Text := s;
RunBtnClick(Nil);
Res := fsScript1.FindLocal('__f__').Value;
end;
как выполнить функцию (в скрипте) и получить значение этой функции в коде ??
пытаюсь по аналогии сделать
value:= 'function __f__: Variant;const A = 10; B = 20; begin Result := A + B end;
function Get_Func(const value: String): Variant;
var
SaveEvent: TfsRunLineEvent;
s:string;
begin
Result := Null;
fsScript1.ClearVariables;
fsScript1.Lines.Text := Value;
fsScript1.Parent := fsGlobalUnit;
SaveEvent := fsScript1.OnRunLine;
if fsScript1.Compile then
Result := fsScript1.FindLocal('__f__').Value;
fsScript1.OnRunLine := SaveEvent;
end;
Эфект тото же.
причем строка без кода выполняется нормально.
Что я делаю не так??
Комментарии
begin
// Result := fsScript1.FindLocal('__f__').Value;
Result := fsScript1.CallFunction('__f__', VarArrayOf([]));
end;
Сделал так.
результат тотже - загрузка процесора на 100 %
помогло только снятие задачи.
Что не так??? Как сделать чтобы считалось??
Вот обработчик OnClick кнопки:
Все прекрассно работает!!!
так заработало...
но не понятно почему всеже подвисало, если был верхний код...