Здравствуйте!
Подскажите пожалуйста, если кто знает.
Я использую модуль QtScript, мне нужно создать некоторое глобальное свойство (конкретнее, имя пользователя программы, от которого скрипт запущен), доступное скрипту во время его работы, но чтобы его нельзя было поменять никаким способом.
Пока я написал следующее:
C
QScriptValue functionUSER(QScriptContext *context, QScriptEngine *engine)
{
if(context->isCalledAsConstructor() || context->argumentCount() != 0)
qDebug() << "INVALID CALL OF FUNCTION USER";
return QScriptValue("user");
}
...
int main(int argc, char **argv)
...
QScriptEngine engine;
engine.globalObject().setProperty("user", engine.newFunction(functionUSER), QScriptValue::PropertyGetter | QScriptValue::PropertySetter | QScriptValue::Undeletable);
Насколько я понял из документации, флаг Undeletable делает как раз то, что мне нужно. Но запуск простешей программы показывает, что я неправ:
Javascript
print(user); // user
user = "root";
print(user); // user, everything is ok
delete user;
user = "root";
print(user); // root, after deleting any value can be assigned, totally not ok :(
Скажите, что я сделал не так? И есть ли способ создать такую скриптовую переменную - чтобы её нельзя никак было изменить или удалить.
Заранее спасибо.