crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

JohnZ
  опции профиля:
сообщение 19.5.2017, 13:05
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


В доке написано
Цитата
QScriptValue QScriptEngine::evaluate ( const QString & program, const QString & fileName = QString(), int lineNumber = 1 )
Evaluates program, using lineNumber as the base line number, and returns the result of the evaluation.
The script code will be evaluated in the current context.

Но в действительности получается что каждый evaluate создаёт свой контекст и ...
evaluate ("var x = 2");
evaluate ("var y = 3");
evaluate ("var z = x + y");

z не вычисляется, т.к. в его контексте нет x & y ?!
Это при условии что вызов evaluate происходит из _разных_ объектов, но по единому указателю QScriptEngine .

Вопрос - возможно-ли сохранить единый контекст для ВСЕХ evaluate ?
(до пере-инициализации QScriptEngine, ес-сно)

Заранее благодарен за помощь !
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 20.5.2017, 10:56
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


я так понимаю, evaluate выполняет отдельный снипет. С аргументами, как показывает справка, можно вызвать функцию так

http://doc.qt.io/qt-5/qscriptengine.html
QScriptValue fun = myEngine.evaluate("(function(a, b) { return a + b; })");
QScriptValueList args;
args << 1 << 2;
QScriptValue threeAgain = fun.call(QScriptValue(), args);


можно также задать глобальные переменные переменные
void QScriptEngine::setGlobalObject(const QScriptValue &object)


сам не тестил, только предполагаю )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 12.5.2025, 22:28