1

Тема: SetUpdateCallback возвращает Lua-стек в котором нет таблицы

Какая то странность.

Вызываю CreateDataSource их С++ с заведомо такими параметрами акций по которым в квике нет загруженных данных.

То есть CreateDataSource  - возвращает пустую таблицу и я вызываю SetUpdateCallback:


        lua_getfield(L, index, "SetUpdateCallback");                    //"Извлекаем" из "таблицы" функцию SetUpdateCallback.

    lua_pushvalue(L, index);                                        //Помещаем копию обьекта таблицы на вершину стека.

    lua_pushcfunction(L, my_callback_);                       //Помещаем имя Сишой callback функции таблицы на вершину стека.

    int status_lua_pcall = lua_pcall(L, 2, 0, 0);              //Реализую вызов метода SetUpdateCallback


static int my_callback_(lua_State* L)
{
    std::cout << "my_callback_:" << lua_gettop(L) << std::endl;

    status = lua_isstring(L, 1);
    if (status == 1)
    {
          std::cout<< "lua_isstring:"<< lua_tostring(L,1) << std::endl ;
    }
    return 0;
}

И с одной стороны все нормально, my_callback_ - вызывается, НО с другой стороны - я ожидаю там увидеть таблицу запалённую данными свечей, а приходит строка:

1
2
3
4
5
6
...
итд

Такое ощущение, как будто бы похоже на размер таблицы, но в какой то момент это число доходит до 3007 и после этого так и приходит 3007 с последующими вызовами my_callback_ .

Непосредственно в скрипте Lua в квике такой странности не наблюдается, все работает нормально.
Что это может быть ?

2 (2022-10-11 11:54:21 отредактировано swerg)

Re: SetUpdateCallback возвращает Lua-стек в котором нет таблицы

Вы с Lua кодом сравните, который выполняет аналогичные действия.

Справка про SetUpdateCallback:

В качестве параметра принимает функцию обратного вызова. Формат функции обратного вызова:
function call_back(NUMBER index)
index – номер изменившейся свечки.

В callback передается номер свечки (по идее число, не строка).
А таблица с параметрами получается вызовом ds:T(index)

3

Re: SetUpdateCallback возвращает Lua-стек в котором нет таблицы

И опять Вы правы!
Спасибо!