Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: marbius от Август 07, 2010, 17:53



Название: [РЕШЕНО] Определить, есть ли в скрипте нужная функция?
Отправлено: marbius от Август 07, 2010, 17:53
Доброго времени суток.

Можно ли определить [из программы]*, есть ли в скрипте необходимая функция (читать: определил ли пользователь в скрипте некую функцию)?

Пока вижу 2 решения:
1. Анализ исходников скрипта - имхо очень примитивно...
2. Вызов требуемой функции "в лоб" и анализ результата, т.е. примерно так:
Код:
QScriptValue val=engine->evaluate("somefunc();");
if (!val.isError())
{
    // функция определена
}

Может есть более "прямое" решение?

Благодарен.

* - добавлено в начальный вопрос


Название: Re: Определить, есть ли в скрипте нужная функция?
Отправлено: ax от Август 07, 2010, 18:20
if (typeof somefunc === "function")
{
    somefunc();
}


Название: Re: Определить, есть ли в скрипте нужная функция?
Отправлено: marbius от Август 07, 2010, 18:26
if (typeof somefunc === "function")
{
    somefunc();
}

Возможно, вопрос был не совсем корректно задан, но необходимо определить из хост-программы (Qt C++) , присутствует ли в загруженном в QScriptEngine пользовательском скрипте некоторая функция. Или я не совсем понял применения вашего кода...


Название: Re: Определить, есть ли в скрипте нужная функция?
Отправлено: asvil от Август 07, 2010, 19:02
Код:
QScriptEngine::globalObject()::property("func").isFunction()


Название: Re: Определить, есть ли в скрипте нужная функция?
Отправлено: marbius от Август 07, 2010, 19:07
2 Филоненко Михаил: Благодарен.

Тема закрыта.

РЕШЕНИЕ

Код:
QScriptEngine::globalObject()::property("func").isFunction()