<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: invalid key to next]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме invalid key to next форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 02 May 2026 15:31:43 +0300</pubDate>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29550/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			М-да, перечитал документацию по <B>next()</B> и понял, что с кодом опять напутал (<B>next()</B> возвращает больше одного значения). &nbsp;Нужно делать вот так:
====code====
<pre>do
&nbsp;&nbsp; local orig_next = next
&nbsp;&nbsp; function next(t, k)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ok, nk, nv = pcall(orig_next, t, k)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not ok then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message(debug.traceback())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error(nk, 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return nk, nv
&nbsp;&nbsp; end
end
</pre>
=============
То есть перегружаем <B>next()</B>, внутри вызываем исходную функцию под <B>pcall()</B>, если она выдала ошибку, то выдаем стек и бросаем исключение, иначе возвращаем оба результата исходной <B>next()</B>. <br />
			<i>01.03.2018 09:44:44, kroki.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29550/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29550/topic3437/</guid>
			<pubDate>Thu, 01 Mar 2018 09:44:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29549/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Внезапно осознал, что предложенный мною код не сработает в случае, если вы в цикле удаляете ключи (что в Lua разрешено). &nbsp;Так что правильнее будет
====code====
<pre>do
&nbsp;&nbsp; local orig_next = next
&nbsp;&nbsp; function next(t, k)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local r, e = pcall(orig_next, t, k)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if e then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message(debug.traceback())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error(e, 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return r
&nbsp;&nbsp; end
end
</pre>
============= <br />
			<i>01.03.2018 09:31:03, kroki.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29549/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29549/topic3437/</guid>
			<pubDate>Thu, 01 Mar 2018 09:31:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29544/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Скорее всего ошибка уже в том, что вы используете <B>next() </B>там, где следовало бы использовать <B>pairs()</B>. &nbsp;Выше вам предлагали код для проверки целочисленных индексов, а у вас, видимо, нечисловые ключи. &nbsp;Если нужно найти конкретное место возникновения, то добавьте в начало файла:
====code====
<pre>do
&nbsp;&nbsp; local orig_next = next
&nbsp;&nbsp; function next(t, i)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i ~= nil and t&#91;i&#93; == nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message(debug.traceback())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return orig_next(t, i)
&nbsp;&nbsp; end
end</pre>
=============
Будет выдано сообщение со стеком того места, где вы вызываете <B>next()</B> с несуществующим ключем (код не проверял, но вроде сработает). <br />
			<i>01.03.2018 00:09:32, kroki.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29544/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29544/topic3437/</guid>
			<pubDate>Thu, 01 Mar 2018 00:09:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29534/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если совсем невмоготу, попробуйте сделать что-то вроде трассировки - выдача сообщений с локализацией достигнутого участка на терминал или в файл. <br />
			<i>28.02.2018 17:47:09, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29534/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29534/topic3437/</guid>
			<pubDate>Wed, 28 Feb 2018 17:47:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29530/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_NChqT2k6" href="/user/11234/" bx-tooltip-user-id="11234">Dmitry</a> написал:<br /><br />====quote====<br /> Николай &nbsp;Камынин &nbsp; написал:<br />ошибка в итераторе next (table, index)<br />index выходит за границу таблицы, либо таблица пустая, либо таблица не существует<br />--------------------------------------<br />Можно поставить &nbsp;итератор внутрь проверки <br />например так<br />if table and #table &gt;0 and #table&gt;=index &nbsp;then<br /> --действия с итератором &nbsp;nex(table,index)<br />...<br />end<br />=============<br />Спасибо, понаставил такие проверки перед всеми next и for, но это к сожалению не помогло<br />=============<br />Возможно, что ошибка возникает внутри функции библиотеки QLUA. .<br />Можно предположить (без текста скрипта сложно гадать) что ошибка возникает при запуске скрипта, когда что-то у Вас еще не инициализировано.<br />Попробуйте определить все начальные значения в функции init.<br />Если скрипт не секретный, то покажите , возможно что-то будет понятно где проблема. <br />
			<i>28.02.2018 17:25:42, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29530/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29530/topic3437/</guid>
			<pubDate>Wed, 28 Feb 2018 17:25:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29529/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_2x5Zkhsq" href="/user/62/" bx-tooltip-user-id="62">Николай  Камынин</a> написал:<br />ошибка в итераторе next (table, index)<br />index выходит за границу таблицы, либо таблица пустая, либо таблица не существует<br />--------------------------------------<br />Можно поставить &nbsp;итератор внутрь проверки <br />например так<br />if table and #table &gt;0 and #table&gt;=index &nbsp;then<br /> --действия с итератором &nbsp;nex(table,index)<br />...<br />end<br />=============<br /><br />Спасибо, понаставил такие проверки перед всеми next и for, но это к сожалению не помогло <br />
			<i>28.02.2018 17:13:47, Dmitry.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29529/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29529/topic3437/</guid>
			<pubDate>Wed, 28 Feb 2018 17:13:47 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29524/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_9RTgD2O8" href="/user/19/" bx-tooltip-user-id="19">Egor Zaytsev</a> написал:<br />Добрый день.<br /><br />Ошибка должна ссылаться на более конкретную строку, например так:<br /><br />stak.lua:4: attempt to perform arithmetic on field 'YIELD_count' (a nil value)<br />=============<br /><br />В данном случае почему-то как раз не ссылается <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=4695&" width="685" height="390" /><br /><i>28.02.2018 16:56:44, Dmitry.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29524/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29524/topic3437/</guid>
			<pubDate>Wed, 28 Feb 2018 16:56:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29517/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_BFIBILgE" href="/user/11234/" bx-tooltip-user-id="11234">Dmitry</a> написал:<br />Приветствую!<br /><br />Пробую освоить qlua, скрипт получился уже приличного размера, но иногда стал останавливаться и в окошке &quot;Ошибки выполнения скрипта&quot;<br />получаю ошибку: <br />====quote====<br />invalid key to 'next'<br />=============<br />Вопрос, как понять откуда это приходит, т.к. ни номера строки, ни какого другого намека не выдается.<br />=============<br />ошибка в итераторе next (table, index)<br />index выходит за границу таблицы, либо таблица пустая, либо таблица не существует<br />--------------------------------------<br />Можно поставить &nbsp;итератор внутрь проверки <br />например так<br />if table and #table &gt;0 and #table&gt;=index &nbsp;then<br /> --действия с итератором &nbsp;nex(table,index)<br />...<br />end <br />
			<i>28.02.2018 07:06:19, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29517/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29517/topic3437/</guid>
			<pubDate>Wed, 28 Feb 2018 07:06:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29514/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br /><br />Ошибка должна ссылаться на более конкретную строку, например так:<br /><br />stak.lua:4: attempt to perform arithmetic on field 'YIELD_count' (a nil value) <br />
			<i>28.02.2018 04:25:50, Egor Zaytsev.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29514/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29514/topic3437/</guid>
			<pubDate>Wed, 28 Feb 2018 04:25:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>invalid key to next</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29452/topic3437/">invalid key to next</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Приветствую!<br /><br />Пробую освоить qlua, скрипт получился уже приличного размера, но иногда стал останавливаться и в окошке &quot;Ошибки выполнения скрипта&quot;<br />получаю ошибку: <br />====quote====<br />invalid key to 'next'<br />=============<br /><br />Вопрос, как понять откуда это приходит, т.к. ни номера строки, ни какого другого намека не выдается. <br />
			<i>26.02.2018 21:26:27, Dmitry.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29452/topic3437/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29452/topic3437/</guid>
			<pubDate>Mon, 26 Feb 2018 21:26:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
