crossplatform.ru

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

 
Тема закрытаНачать новую тему
> Динамический вызов ф-ции в QT Script, По имени ф-ции в переменной
JohnZ
  опции профиля:
сообщение 25.6.2017, 13:22
Сообщение #1


Участник
**

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

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




Репутация:   0  


Всем Здравия !

Задаю вопрос повторно, по совету админа, т.к. предыдущий ответ утерян ...

Проблема в следующем, - есть в скрипте функции CalcVO1(), CalcVO2(), CalcVO3(), ...
Как можно вызвать эти ф-ции по имени в переменной ?

В и-нете нашёл аналогичный вопрос (и ответ !), ...

http://www.sql.ru/forum/879788/js-vyzov-fu...ni-v-peremennoy

но ответ был дан для web-а, и в QT Script он почему-то не работает :unsure:

На скрине окно отладчика QT Script с демонстрацией проблемы на вызове тестовой ф-ции ...

В принципе половинчатое решение есть, с пом-ю С++

Раскрывающийся текст

void MainWindow::callFunc(QString ffName, int fnum)
{
QString fName = QString("%0%1").arg(ffName).arg(fnum);
if (engine->globalObject().property(fName).isValid())
engine->globalObject().property(fName).call();
}

... но тогда придётся _параметры_ вызова делать глобальными в скрипте, что некузяво :(

Заранее благодарен за помощь.

Сообщение отредактировал JohnZ - 25.6.2017, 15:23
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 27.6.2017, 16:18
Сообщение #2


Старейший участник
****

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

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




Репутация:   8  


В qscript можно использовать просто this вместо window для глобального объекта (по моему я так писал :lol:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JohnZ
  опции профиля:
сообщение 29.6.2017, 12:21
Сообщение #3


Участник
**

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

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




Репутация:   0  


Спасибо Lanz ! Рещено !
Я не заметилЪ точку после THIS и поэтому не работало !!!

Раскрывающийся текст


function CalcVO1() { }

function CalcVO2() { }

function CalcVO3() { }

//////////////////////////////////////

var Num = 1;

this['CalcVO' + Num ]();

Num = 2;

this['CalcVO' + Num ]();



PS: 2 Admin
Как в заголовке ТЕМЫ поставить "РЕШЕНО" ???

Сообщение отредактировал JohnZ - 29.6.2017, 12:35
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 30.6.2017, 12:56
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Цитата(JohnZ @ 29.6.2017, 12:21) *
Как в заголовке ТЕМЫ поставить "РЕШЕНО" ???
Можно просто закрыть тему, у автора тмы на это есть права!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.3.2024, 14:27