Incompatible types: 'Class String', 'String'
Пустой проект, код из руководства разработчика:
Вопрос. Как правильно добавить процедуру чтоб всё работало?
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'Вопрос. Как правильно добавить процедуру чтоб всё работало?
Комментарии
Вставил, так и не работает.
И вообще я сделал выбор в пользу Pascal Script.
Бесплатно, и работает без вот таких вот крючков.
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;