Функция успешно возвращается, и я могу использовать значения из таблицы, но появляется сообщение об ошибке «Отладка не удалось», и это конец. Я знаю, что проблема с assert находится в цикле for, но точно не знаю, как это исправить. Заранее спасибо.
static int l_xmlNodeGetValues(lua_State *L)
{
int iDocID = luaL_checkint(L, 1);
const char *pszNodeName = luaL_checkstring(L, 2);
CConfig *file = docs.at(iDocID);
int i = 1;
lua_newtable(L);
for( TiXmlElement *e = file->GetRootElement()->FirstChildElement(pszNodeName);
e; e = e->NextSiblingElement(pszNodeName) )
{
lua_pushstring(L, e->GetText());
lua_rawseti(L,-2,i);
i++;
}
return 1;
}
РЕДАКТИРОВАТЬ: когда я устанавливаю int i; на 0 он работает, но забывает о последнем элементе. Почему нет, если i == 1?
Утверждение не выполнено, когда lua_rawseti (L, -2, i); и i == 1
Поскольку решения, решающего мою проблему, не существует, я постараюсь описать, что он делает и каков результат в этих двух случаях. Я просто хочу получить все значения из указанного узла в файле xml:
<root>
<node>A</node>
<node>B</node>
<node>C</node>
<node>D</node>
</root>
Скрипт выглядит так:
xmlfile = xmlOpenFile( "myfile.xml", "root" );
if ( xmlfile ) then
for _, v in ipairs( xmlNodeGetValues( xmlfile, "node" ) ) do
print( v );
end
end
ПРОБЛЕМА:
int я = 1;
вывод:
A B C D !!! Утверждение отладки не выполнено !!!
------------------------------------------------------
int я = 0;
вывод:
B C D без ошибок ...
for
, это вина Lua API? - person Bartek Banachewicz   schedule 12.08.2013t[0] = e->GetText()
? - person greatwolf   schedule 12.08.2013lua_pushstring(L, "blah foobar");
и закомментируйтеlua_pushstring(L, e->GetText());
- person greatwolf   schedule 12.08.2013