Incompatible types: 'Class String', 'String'

отредактировано 03:46 Раздел: FastScript
Пустой проект, код из руководства разработчика:
procedure TForm1.DelphiFunc(s: String; i: Integer);
begin
  ShowMessage(s + ', ' + IntToStr(i));
end;

{ обработчик TfsCallMethodEvent }
function TForm1.CallMethod(Instance: TObject; ClassType: TClass; const MethodName: String;
  var Params: Variant): Variant;
begin
  DelphiFunc(Params[0], Params[1]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  { делаем процедуру DelphiFunc доступной в скрипте }
  fsScript1.AddMethod('procedure DelphiFunc(s: String; i: Integer)', CallMethod);
  { компилируем скрипт с использованием PascalScript }
  fsScript1.Lines := Memo1.Lines;
  fsScript1.SyntaxType := 'PascalScript';
  if fsScript1.Compile then
    fsScript1.Execute else   { выполнить, если компиляция успешна}
    ShowMessage(fsScript1.ErrorMsg); { вывести сообщение об ошибке }
end;
запускаю и получаю эксепшн: Incompatible types: 'Class String', 'String'

Вопрос. Как правильно добавить процедуру чтоб всё работало?

Комментарии

  • отредактировано 03:46
    Видимо, забыли сделать fsScript1.Parent := fsGlobalUnit.
  • отредактировано August 2005
    написал:
    Видимо, забыли сделать fsScript1.Parent := fsGlobalUnit.

    Вставил, так и не работает.

    И вообще я сделал выбор в пользу Pascal Script.

    Бесплатно, и работает без вот таких вот крючков.
  • отредактировано August 2005
    Что, так не работает? А крючки в документации описаны.

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    fsScript1.SyntaxType := 'PascalScript';
    fsScript1.AddMethod('procedure DelphiFunc(s: String; i: Integer)', CallMethod);
    fsScript1.Lines := Memo1.Lines;
    fsScript1.Parent := fsGlobalUnit;
    if fsScript1.Compile then
    fsScript1.Execute else { выполнить, если компиляция успешна}
    ShowMessage(fsScript1.ErrorMsg); { вывести сообщение об ошибке }
    end;

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

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