Форум программистов, компьютерный форум, киберфорум
Lua
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
96 / 1 / 0
Регистрация: 04.10.2022
Сообщений: 41

Lua C API - доступ к строковому полю таблицы

04.11.2022, 20:29. Показов 2463. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, как получить доступ к строковому полю таблицы из Lua C api ?

Для примера:

код на чистом Lua
C
1
2
3
my_table_DataSource, error_desc_2 = CreateDataSource("TQBR", "SBER",  INTERVAL_M5)  
 
message("Table_Size:" .. tostring(my_table_DataSource.Size()))
То есть - есть функция CreateDataSource, которая возвращает таблицу, у которой есть метод Size(), который возвращает размер таблицы.

В Lua C Api - этот метод у таблицы вызывается следующим образом:

C++
1
2
3
4
5
6
7
8
       //index - номер таблицы в стеке Lua
 
    lua_getfield(L, index, "Size");            //"Извлекаем" из "таблицы" функцию отвечающую за возвращения размера этой таблицы.
    lua_pushvalue(L, index);                //Помещаем копию обьекта таблицы на вершину стека.
 
    int status_lua_pcall = lua_pcall(L, 1, 1, 0);      //Вызываем функцию Size 
 
   //После вызова lua_pcall - на вершину Lua-стека помещается числовая переменная в которой находится размер таблицы. Все хорошо, все работает.

Вот теперь есть функция Lua, которая так же возвращает таблицу:

C
1
2
3
table_stock = getQuoteLevel2("TQBR", "SBER")
 
message("bid_count:" .. table_stock.bid_count)
НО в данном случае "bid_count" - это не метод, а просто, как я понимаю строкове поле возвращенной таблицы. И если в Луа - доступ осуществляется, как в первом, так и во втором случае через точку, то в Lua C api - уже, как в первом случае не работает:


C++
1
2
3
4
5
6
7
8
       //index - номер таблицы в стеке Lua
 
    lua_getfield(L, index, "bid_count");            //"Извлекаем" из "таблицы" функцию отвечающую за возвращения размера этой таблицы.
    lua_pushvalue(L, index);                           //Помещаем копию обьекта таблицы на вершину стека.
 
    int status_lua_pcall = lua_pcall(L, 1, 1, 0);      //Вызываем функцию Size 
 
   //После вызова lua_pcall - возвращается ошибка:  attempt to call a string value.
То есть достать строковое поле из таблицы нужно каким то другим способом, вот не могу понять каким.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2022, 20:29
Ответы с готовыми решениями:

Lua api c++ поучение значения ключа таблицы
Скажите пожалуйста, как получить определить тип значения ключа таблицы на lua с++? Вот код, проверить тип переменной значения ключа. ...

Строка фильтра во строковому полю
есть компонент ADOQuery делать снова запросы не охото (активен большой запрос который отображает все связи таблицы с другими) я могу...

Доступ к переменной по строковому имени
Ребят. Простой вопрос. Есть переменная с именем "a". И есть строка "a". Надо, используя строку "a" получить доступ к...

20
Модератор
 Аватар для Curry
5173 / 3545 / 536
Регистрация: 01.06.2013
Сообщений: 7,708
Записей в блоге: 9
08.11.2022, 19:12
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lunar_ Посмотреть сообщение
Вы называете еще более вложенную - та которая по индексу извлекается ?
да. ... наверное ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2022, 19:12

Создать коллекцию, доступ к элементам которой осуществляется по строковому индесатору
Есть класс public class Person { private string name; private int age; public string Name ...

Как сделать массив, доступ к элементам, в котором, возможен и по индексу и по строковому ключу?
В Visual Basic существует объект Collection. Для тех, кто не знает, это аналог массива, в котором могут храниться различные типы данных....

Проблема с lua api c++
Здравствуйте Уважаемые программисты. решил изучать lua api c++ по видео...

Использование Lua API
Доброго дня. Хочу извиниться, если написал не в тот форум. Получилось разобраться практически со всем, что касается интеграции Lua, кроме...

Класс для lua api c++
Здравствуйте уважаемые программисты. Занимаюсь lua api c++. Хочу реализовать класс, но что-то не получается, Помогите пожалуйста. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru