Добавление функции в скрипт
помогите!!! плиз...
Только пытаемся перейти на использование Fast Script.
Описываю функцию в Delphi (так, как написано в Мануале) и пытаюсь ее вызвать из скрипта. Постоянно получаю ошибку "Incompatible types: 'Class String', 'String'" или "Incompatible types: 'Class Integer', 'Integer'". Уже скачал все апдейты для Делфи - ничё не помогло. Поогите разобраться...
Вот мой код:
....
private
{ Private declarations }
function CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
public
{ Public declarations }
procedure DelphiFunc(testovy: String);
....
{ собственно, функция }
procedure TForm1.DelphiFunc(testovy: String);
begin
ShowMessage(testovy);
end;
{ обработчик TfsCallMethodEvent }
function TForm1.CallMethod(Instance: TObject; ClassType: TClass; const MethodName: String; var Params: Variant): Variant;
begin
DelphiFunc(Params[0]);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
fsScript1.Clear;
fsScript1.Lines.LoadFromFile('ScriptDB.PAS');
fsScript1.AddForm(Form1);
fsScript1.AddMethod('procedure DelphiFunc(testovy: String)', CallMethod);
fsScript1.AddConst('stroka', 'String', 'Astalavista');
fsScript1.Parent := fsGlobalUnit;
fsScript1.SyntaxType := 'PascalScript';
if fsScript1.Compile then
fsScript1.Execute else
ShowMessage(fsScript1.ErrorMsg);
end;
....
А вот сам скрипт
begin
DelphiFunc('test');
ShowMessage('test');
end.
Надеюсь на ваш ответ
Только пытаемся перейти на использование Fast Script.
Описываю функцию в Delphi (так, как написано в Мануале) и пытаюсь ее вызвать из скрипта. Постоянно получаю ошибку "Incompatible types: 'Class String', 'String'" или "Incompatible types: 'Class Integer', 'Integer'". Уже скачал все апдейты для Делфи - ничё не помогло. Поогите разобраться...
Вот мой код:
....
private
{ Private declarations }
function CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
public
{ Public declarations }
procedure DelphiFunc(testovy: String);
....
{ собственно, функция }
procedure TForm1.DelphiFunc(testovy: String);
begin
ShowMessage(testovy);
end;
{ обработчик TfsCallMethodEvent }
function TForm1.CallMethod(Instance: TObject; ClassType: TClass; const MethodName: String; var Params: Variant): Variant;
begin
DelphiFunc(Params[0]);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
fsScript1.Clear;
fsScript1.Lines.LoadFromFile('ScriptDB.PAS');
fsScript1.AddForm(Form1);
fsScript1.AddMethod('procedure DelphiFunc(testovy: String)', CallMethod);
fsScript1.AddConst('stroka', 'String', 'Astalavista');
fsScript1.Parent := fsGlobalUnit;
fsScript1.SyntaxType := 'PascalScript';
if fsScript1.Compile then
fsScript1.Execute else
ShowMessage(fsScript1.ErrorMsg);
end;
....
А вот сам скрипт
begin
DelphiFunc('test');
ShowMessage('test');
end.
Надеюсь на ваш ответ
Комментарии
Причем, при тестировании замечено, что ошибка это выпадает только в первый раз при нажатии на Button1. А при втором, третьем и т.д. нажатиях скрипт выполняется без ошибок. Что это может быть?
fsScript1.Parent := fsGlobalUnit;
fsScript1.Clear;
fsScript1.Lines.Assign(Memo1.Lines);
fsScript1.AddForm(Form1);
fsScript1.AddMethod('procedure DelphiFunc(testovy: String)', CallMethod);
fsScript1.AddConst('stroka', 'String', 'Astalavista');
fsScript1.SyntaxType := 'PascalScript';
if fsScript1.Compile then
fsScript1.Execute
else
ShowMessage(fsScript1.ErrorMsg);