Всем привет .
Вот небольшой примерчик:
QScriptValue fun = engine.evaluate("function(a,b){return a+b;}"); //вводим функцию непосредственно в коде С++
QScriptValueList args; //список аргументов
args << QScriptValue(&engine, 5) << QScriptValue(&engine, 7);
QScriptValue y = fun.call(QScriptValue(), args); //5+7=12
int result = y.toNumber();
void MyFun(std::vector < std::vector <char> >& MyMassive)
{
//обход массива
for (int i = 0; i<10; i++)
for (int i = 0; i<10; i++)
MyMassive[i][j]
}
Такое вот нашел в Assistante, может поможет:
Q_DECLARE_METATYPE(QVector<int>)
...
qScriptRegisterSequenceMetaType<QVector<int> >(engine);
...
QVector<int> v = qscriptvalue_cast<QVector<int> >(engine->evaluate("[5, 1, 3, 2]"));
qSort(v.begin(), v.end());
QScriptValue a = engine->toScriptValue(v);
qDebug() << a.toString(); // outputs "[1, 2, 3, 5]"
мне блин с этим в жизнь не разобраться.....
QScriptValue arr = scriptEngine->newArray( 10 );
for( int i = 0; i < 10; ++i )
{
QScriptValue vec = scriptEngine->newArray( 10 );
for( int j = 0; j < 10; ++j )
vec.setProperty( j, MyMassive[i][j] );
arr.setProperty( i, vec );
}
QScriptValue arr = scriptEngine->newArray( 10 );
for( int i = 0; i < 10; ++i )
{
QScriptValue vec = scriptEngine->newArray( 10 );
for( int j = 0; j < 10; ++j )
vec.setProperty( j, MyMassive[i][j] );
arr.setProperty( i, vec );
}
QScriptValue fun = scriptEngine.evaluate("function( arr ) { return arr[ 4 ][ 6 ]; }");
QScriptValueList args;
args << QScriptValue( &scriptEngine, arr );
QScriptValue threeAgain = fun.call( QScriptValue(), args );
Гость_BRE, огромное спасибо за помощь, только все равно не компилируется пишет ошибку в строчке:
vec.setProperty( j, MyMassive[i][j] );
где ошибка ?std::vector < std::vector <char> > *MyMassive;
MyMassive = new std::vector < std::vector <char> >(10, std::vector<char> 10);
for( int i = 0; i < 10; ++i )
{
for( int j = 0; j < 10; ++j )
(*MyMassive)[i][j] = 5;
vec.setProperty( j, (*MyMassive)[i][j] );
vec.setProperty( j, (*MyMassive)[i][j] );
QScriptEngine engine;
(*MyMassive)[0][0] = 3; //---- это работает нормально
//написано ниже
QScriptValue arr = scriptEngine->newArray( 10 );
for( int i = 0; i < 10; ++i )
{
QScriptValue vec = scriptEngine->newArray( 10 );
for( int j = 0; j < 10; ++j )
vec.setProperty( j, MyMassive[i][j] ); // в этом месте ошибка компиляции error c2664 невозможно преобразовать параметр 1 из 'int' в
// 'const QString &' Ни один конструктор не смог принять исходный тип, либо разрешение перегру
// зки конструктора неоднозначно
arr.setProperty( i, vec );
}
еще один момент в место scriptEngine->newArray я использую engine->newArray
vec.setProperty( j, QScriptValue( scriptEngine, (*MyMassive)[ i ][ j ] ) );
QScriptEngine engine;
QScriptValue arr = scriptEngine->newArray( 10 );
for( int i = 0; i < 10; ++i )
{
QScriptValue vec = scriptEngine->newArray( 10 );
for( int j = 0; j < 10; ++j ){
QScriptValue temp(&engine, (*MyMassive)[i][j]);
vec.setProperty( j, temp );
}
arr.setProperty( i, vec );
}
args << QScriptValue( &engine, arr );
args << arr;
args << arr;
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)