|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
|||||||||||||||||||||
Lua передача таблицы в программу на C++03.10.2015, 16:17. Показов 8645. Ответов 26
Метки нет (Все метки)
Пытаюсь передать таблицу из скрипта на Lua в программу на С++. Если таблица - одномерный массив, то все нормально.
Код на Lua:
-1=11 -2=1 -3[null] -1=22 -2=2 -3[nul] -1=33 -2=3 -3[nul] -1=111 -2=4 -3[nul] -1=222 -2=5 -3=[nul] -1=333 -2=6 -3=[nul] Все как надо, вопросов нет. Теперь пытаюсь передать такую таблицу:
-1=0 -2=1 -3=0 -4=1 -5=0 -1=0 -2=2 -3=0 -4=1 -5=0 Помогите разобраться, как достать данные из таблицы, или в какую сторону копать.
0
|
|||||||||||||||||||||
| 03.10.2015, 16:17 | |
|
Ответы с готовыми решениями:
26
Как вывести на печать данные из таблицы из lua-файла? Lua наследование, lua ооп Посоветуйте программу для написания, просмотра и отладки lua скриптов |
|
|
||||||||||||||||
| 04.10.2015, 11:12 | ||||||||||||||||
Добавлено через 8 минут
Используй:
Смотри: Роберту Иерузалимски "Программирование на языке LUA" [3-е издание] (2014) стр 301(304)
1
|
||||||||||||||||
|
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
|
|
| 04.10.2015, 15:25 | |
|
Karim2,
Ошибка во втором вызове lua_next, вы опять обращаетесь к первой таблице
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
||||||
| 04.10.2015, 17:24 [ТС] | ||||||
|
при втором вызове lua_next(L, 1) состояние стека:
-1 nil -2 ссылка на строку в таблице T[1] (должна быть по идее) -3 ключ к первой таблице -4 ссылка на таблицу T Добавлено через 14 минут Разобрался, всем огромное спасибо!!! Вот рабочий код:
0
|
||||||
|
|
|||
| 04.10.2015, 21:03 | |||
|
Lua C Api вроде как предоставляет возможность работать только с однобайтовыми строками или я ошибаюсь?
0
|
|||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
|
| 05.10.2015, 09:17 [ТС] | |
|
Lua да, но мне для вывода в окна в С++ нужны wchar_t
0
|
|
|
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
|
||
| 05.10.2015, 09:18 | ||
|
Karim2, вы пишите
1
|
||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
|
| 05.10.2015, 09:41 [ТС] | |
|
Да, согласен, ошибочка вышла. Нужно будет попробовать.
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
|||||||||||||||||||||
| 05.10.2015, 10:06 [ТС] | |||||||||||||||||||||
|
Пока выходит. Делаю потом так:
Скорее всего придется использовать так:
0
|
|||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
||||||
| 05.10.2015, 12:21 [ТС] | ||||||
|
Попробовал с lua_next(L,-2)
11 14 13 12 21 24 23 22 и с while(lua_next(L, -2) !=0); не работает, только с for. Поэтому нужно знать размер таблицы Table.
0
|
||||||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
||||||
| 05.10.2015, 13:05 [ТС] | ||||||
|
Такой функции у меня нет (Lua 5.1)
Есть и работает
0
|
||||||
|
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
|
|||
| 06.10.2015, 09:40 | |||
|
И не проще ли написать C-функцию и вызывать её из Lua? Вместо того, что лазить в C по Lua-таблицам?
0
|
|||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
|
| 06.10.2015, 10:07 [ТС] | |
|
С ключами я "ступил", спасибо за подсказку.
Код тот же самый. Вместо for ставлю while, который закомментирован, а в конце i++. Мне из торгового терминала, где запущена Lua-машина нужно передать таблицы в программу торгового робота, который написан на С++.
0
|
|
|
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
|
|||||||
| 07.10.2015, 08:38 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 13
|
|
| 07.10.2015, 09:57 [ТС] | |
|
При таком варианте на втором заходе в стеке на -1 Т[1] а должен быть следующий ключ.
Код слетает, т.к. на третьем заходе lua_next не дает 0, хотя все строки в таблице кончились.
0
|
|
|
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
|
|
| 08.10.2015, 09:47 | |
|
не может там быть T[1], т.к. как мы его удаляем в конце цикла строкой 20
0
|
|
| 08.10.2015, 09:47 | |
|
Помогаю со студенческими работами здесь
20
Передача таблицы БД клиенту Передача SQLite таблицы по TCP Передача заполненной таблицы в представление
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|