CallFunction

lvilvi
отредактировано 00:19 Раздел: FastScript
function TfsScript.CallFunction(const Name: String; const Params: Variant): Variant;

При использовании данного метода не устанавливается флаг IsRunning - как следствие нельзя определить испольняется ли он , что бы можно было прервать

При выхове TfsScript.Execute - всё корректно

Комментарии

  • отредактировано 00:19
    Так ведь Execute исполняется асинхронно (т.е., скрипт крутится отдельно, а программа бежит себе дальше), а CallFunction ждет окончания исполнения, чтобы вернуть результат. то есть никто не мешает выставлять свой собственный флаг.
    Скажем:
    MyFuncRunning:=true;
    s:=fs.CallFunction('foo',[...]);
    MyFuncRunning:=false;

    Кстати, это еще вопрос, что вернет прерванная функция...
  • lvilvi
    отредактировано 00:19
    Вернёмся к нашим баранам , в прошлых версиях всё нормально отрабатывалось, при вызове функции из скрипта выставлялся нормально флаг и нормолньо прерывалось из программы по требованию
  • lvilvi
    отредактировано 00:19
    В вызове function TfsScript.CallFunction(const Name: String; const Params: Variant): Variant;
    участок
    if VarIsArray(Params) then
    for i := 0 to VarArrayHighBound(Params, 1) do
    p.Params.Value := Params;
    Result := p.Value;
    end;

    Заменил на

    if VarIsArray(Params) then
    for i := 0 to VarArrayHighBound(Params, 1) do
    p.Params.Value := Params;
    FExitCalled := False;
    FTerminated := False;
    FIsRunning := True;
    FMainProg := True;
    try
    Result := p.Value;
    finally
    FExitCalled := False;
    FTerminated := False;
    FIsRunning := False;
    end;

    Всё стало работать
  • отредактировано 00:19
    Да... вот это молодец. Спросил - ответили как всегда с помощью изъяснения абстракциями. Сделал сам. Круто. Заметьте, кстати, что на вопросы типа "почему вывалилась такая-то ошибка" или "как сделать random" ответов просто миллион. Знатоки мля. А я -то думаю, как Advanced member 'ами становятся. Народ, извините, конечно, здесь полно и толковых людей, но почему-то ни одного ответа на интересующие меня вопросы я на этом форуме не получил. Сплошь и рядом советы по просмотру исходников ;) . У меня сестра младшая, которая не знает слова "программирование" тоже может давать такие советы.
    Накипело просто.
  • отредактировано 00:19
    Dvin написал:
    Накипело просто.
    Поделись кипяточком, а? И приходи на кофий ;)
  • отредактировано July 2005
    А ты бы иногда заглядывал в исходники. Полезное чтиво. Тогда бы и вопросов не возникало. А то на пустящные вопросы будут наматывать себе "адвенсед лузеры" типа Стрингера.

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

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