Parse error. Не выполняется скрипт в qt4.6.0 |
Здравствуйте, гость ( Вход | Регистрация )
Parse error. Не выполняется скрипт в qt4.6.0 |
igor_bogomolov |
10.2.2010, 13:52
Сообщение
#1
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Написал небольшой тестовый пример с использованием qscript.
main.cpp
test.pro
C версией qt4.5.3 этот пример прекрасно работает. С версией 4.6.0 (sdk) при выполнении получаю сообщение Цитата "Script error: function( a, b ) { return a+b; }" Помогите разобраться в чем может быть проблема? У кого есть возможность попробуйте скомпилить под разными версиями qt.
"SyntaxError: Parse error"
Прикрепленные файлы
|
|
|
BRE |
10.2.2010, 14:17
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Да, похоже теперь только так:
Раскрывающийся текст
Сообщение отредактировал BRE - 10.2.2010, 14:17 |
|
|
igor_bogomolov |
10.2.2010, 15:12
Сообщение
#3
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Странно что в документации они это не везде поправили. В описании QScriptEngine написано
Цитата The following code snippet shows how a script function can be defined and then invoked from C++ using QScriptValue::call(): Считаю это ошибкой в документации.
QScriptValue fun = myEngine.evaluate("function(a, b ) { return a + b; }"); QScriptValueList args; args << 1 << 2; QScriptValue threeAgain = fun.call(QScriptValue(), args); |
|
|
Haccel |
14.3.2010, 6:21
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 14.3.2010 Пользователь №: 1530 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да, похоже теперь только так: Раскрывающийся текст
Очень не рекомендую так запускать скрипт. Можете получить ошибку, которую будете день искать и не найдёте.. есть опыт, работаю уже не первый год с qtscript. В двух словах, после строки:
Когда вы запросите свойство у глобального скопа
Правое выражение вернёт инвалидный объект, или того хуже (как было у меня), если вы таким образом запускаете скрипт несколько раз, результат ранней компиляции функции . Те получается так что между этими двумя строками скрипт не успевает скомпилить или выполнить функцию. Почему так происходит - немогу знать, вроде обещано ,что всё работать синхронно должно... Куда проще выйти из ситуации просто обернув анонимную функцию в круглые скобки.Те :
|
|
|
BRE |
14.3.2010, 11:06
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Те получается так что между этими двумя строками скрипт не успевает скомпилить или выполнить функцию. Почему так происходит - немогу знать, вроде обещано ,что всё работать синхронно должно... Должно и работает синхронно. Причем у меня выполняется большой текстовый файл, который описывает очень много функций, а дальше они по необходимости вызываются из ядра программы. И никогда проблем не было... |
|
|
Текстовая версия | Сейчас: 2.12.2024, 1:55 |