Добавление функции в скрипт

отредактировано 07:05 Раздел: FastScript
помогите!!! плиз...
Только пытаемся перейти на использование 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.

Надеюсь на ваш ответ

Комментарии

  • отредактировано 07:05
    Продолжение.
    Причем, при тестировании замечено, что ошибка это выпадает только в первый раз при нажатии на Button1. А при втором, третьем и т.д. нажатиях скрипт выполняется без ошибок. Что это может быть? ;)
  • отредактировано 07:05
    Надо присваивать Parent сразу первой строкой:

    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);

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.