возможно глупый вопрос, но...

отредактировано 04:45 Раздел: FastScript
в дельфи я пишу:
type TMyType=(aaa,bbb,ccc)

procedure TForm1.MyProc;
AddEnum('TMyType', 'aaa, bbb, ccc');
AddMethod('function MyFunc(AVar: TMyType): integer', CallMethods)
end;

в скрипте:
begin
ShowMessage(MyFunc(aaa));
end.

при выполнении fsScript.Compile выдается ошибка (fsScript.ErrorMsg):
Incompatible types: 'Class TMyType', 'TMyType'

Комментарии

  • отредактировано 04:45
    Типы надо добавлять в fsGlobalUnit - именно там они и ищутся при компиляции.
  • отредактировано 04:45
    а как быть с многопоточностью?
    т.е. у меня в программе создается несколько потоков. В каждом есть компонент fsScript
    при создании каждого потока выполняется процедура по заполнению этого fsScript'а одинаковыми процедурами и функциями.
    Если сделать это один раз с fsGlobalUnit, то как в CallMethods узнать, из какого именно fsScript'а вызвалась эта функция?
  • отредактировано 04:45
    Процедуры и функции - пожалуйста, можно добавлять в каждый TfsScript. Типы - только в fsGlobalUnit.
  • отредактировано 04:45
    Вы меня не правильно поняли ;) (я сложный пример привел ;) )
    Допустим, у меня есть пара fsScript
    как можно добавить функции и процедуры в fsGlobalUnit, чтобы при вызове функции CallMethods я мог узнать, из какого именно fsScript это пришло и в зависимости от этого менять результат этого CallMethods?
    например:
    procedure MyProc;
    begin
    with fsGlobalUnit do
       begin
       AddMethod('function...........', CallMethods);
       AddMethod('procedure...........', CallMethods);
       ...................
       end;
    end;
    
    function CallMethods(.....): Variant;
    begin
    if MethodName='MYFUNCTION' then
       begin
       if <...> = fsScript1 then   //   <-------
          Result:='aaa'
          else Result:='bbb';
       end;
    ...................
    end;
    
  • отредактировано 04:45
    Это невозможно.

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

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