<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Mon, 20 Apr 2026 06:04:39 +0300</pubDate>
		<item>
			<title> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60214/topic6971/"> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_77LeJWVB" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Теперь понятно?<br />=============<br />Тогда простой пример тоже должен выдавать ошибку:
====code====
<pre>local test_tab={}
&nbsp;&nbsp;&nbsp;if (test_tab&#91;0&#93;==nil) then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say("1")
&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say("2")
&nbsp;&nbsp;&nbsp;end
</pre>
=============
Однако всё работает. Результат &quot;1&quot;. Подозреваю, что getCandlesByIndex - иногда выдает не таблицу, и тогда #tab2~=0 - тоже выдаст ошибку.<br />Видимо, в моем случае, надо перед проверкой индекса так же добавить проверку на тип &quot;table&quot;. &nbsp; <br />
			<i>12.12.2021 23:01:42, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60214/topic6971/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60214/topic6971/</guid>
			<pubDate>Sun, 12 Dec 2021 23:01:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60195/topic6971/"> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_NM73G4C6" href="/user/1339/" bx-tooltip-user-id="1339">Сергей</a> написал:<br />Здравствуйте!<br />Есть функция чтения последней свечи, которая несколько лет работала стабильно, но последнее время, раз в несколько дней выдает ошибку(хотя свечи на графике есть).<br />Функция читает таблицу с одной последней свечой в tab2. Иногда при попытке обратиться к таблице по индексу &quot; if (tab2&#91;0&#93;==nil) then &quot; - вылетает ошибка &quot;attempt to index a function value (local &#39;tab2&#39;)&quot;<br />Добавил проверку tab2==nil, и она в момент ошибки не срабатывает, т.е. tab2 - задана. 
====code====
<pre>&nbsp;&nbsp; function&nbsp;&nbsp; last_condle ()&nbsp;&nbsp;-- самая последняя свеча 
&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;&nbsp;tmp_max =&nbsp;&nbsp;getNumCandles (options.future .. "_price")
&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;&nbsp;tab2, n1, tmpname =&nbsp;&nbsp;getCandlesByIndex (options.future .. "_price",&nbsp;&nbsp;0 ,tmp_max -&nbsp;&nbsp;1 ,&nbsp;&nbsp;1 ) 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Костыль №1 
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;(tab2 =&nbsp;&nbsp;=&nbsp;&nbsp;nil )&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say( " Ошибка 1748 - нет данных!!! - входим в режим ожидания данных tmp_max="&nbsp;&nbsp;.. tmp_max)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while&nbsp;&nbsp;(tab2 =&nbsp;&nbsp;=&nbsp;&nbsp;nil )&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep ( 731 )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tab2, n1, tmpname =&nbsp;&nbsp;getCandlesByIndex (options.future .. "_price",&nbsp;&nbsp;0 ,tmp_max -&nbsp;&nbsp;1 ,&nbsp;&nbsp;1 )&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;-- Костыль №2 
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;(tab2&#91; 0 &#93; =&nbsp;&nbsp;=&nbsp;&nbsp;nil )&nbsp;&nbsp;then&nbsp;&nbsp; -- Тут иногда ошибка "attempt to index a function value (local 'tab2')" 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say( " Ошибка 1739 - нет данных!!! - входим в режим ожидания данных tmp_max="&nbsp;&nbsp;.. tmp_max)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while&nbsp;&nbsp;(tab2&#91; 0 &#93; =&nbsp;&nbsp;=&nbsp;&nbsp;nil )&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep ( 731 )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tab2, n1, tmpname =&nbsp;&nbsp;getCandlesByIndex (options.future .. "_price",&nbsp;&nbsp;0 ,tmp_max -&nbsp;&nbsp;1 ,&nbsp;&nbsp;1 )&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;end 

&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;tab2&#91; 0 &#93;
 end 
&nbsp;&nbsp;</pre>
=============
 Если я правильно понимаю, LUA считает что tab2 - функция? Но getCandlesByIndex не должен функий выдавать. Как это вылечить?<br /><br />LUA 5.4.1<br />=============<br />У Вас ошибка при обращении к нулевому индексу в таблице. <br /> Т е обращение к такому индексу происходит первый раз. Это подобно обращению за границы таблицы.<br />Т е не ни элемента, а индекса ноль. Но при этом сама таблица существует.<br />----------------------------------<br />Но в первом случае Вы проверяете на nil не индекс а само значение , <br />а во втором Вы проверяете опять не индекс а существование таблицы.<br />--------------------------<br />Вот Вам система и говорит что индекса 0 нет, а не значения и не таблицы.<br />Как минимум Вам надо проверять число элементов в таблице. &nbsp; т е &nbsp;(#tab2~=0)<br />Но так как стандартно в таблицу пишется всегда с 1, а запись нулевого элемента - это творчество разработчиков QLUA, то проверка &nbsp;числа элементов таблицы может быть недостаточна.<br />---------------------<br />Теперь понятно? <br />
			<i>11.12.2021 11:45:28, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60195/topic6971/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60195/topic6971/</guid>
			<pubDate>Sat, 11 Dec 2021 11:45:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60192/topic6971/"> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_EkbZOHxb" href="/user/3226/" bx-tooltip-user-id="3226">Игорь Б</a> написал:<br />В справке по Qlua, к сожалению, не указано, что возвращается в случае не получения данных данной функции.Я при проверке этой функции сравниваю получаемую таблицу и ее значения не с nil, а с false (т.е. if (not tab2) и if (not tab2&#91;0&#93;)).Пока работает.<br />=============<br />Спасибо, попробую Ваш вариант. Странно, что вообще это происходит днем, когда свечи есть. &nbsp; <br />
			<i>10.12.2021 19:04:08, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60192/topic6971/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60192/topic6971/</guid>
			<pubDate>Fri, 10 Dec 2021 19:04:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60191/topic6971/"> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В справке по Qlua, к сожалению, не указано, что возвращается в случае не получения данных данной функции.<br />Я при проверке этой функции сравниваю получаемую таблицу и ее значения не с nil, а с false (т.е. if (not tab2) и if (not tab2&#91;0&#93;)).<br />Пока работает. <br />
			<i>10.12.2021 18:40:44, Игорь Б.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60191/topic6971/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60191/topic6971/</guid>
			<pubDate>Fri, 10 Dec 2021 18:40:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60190/topic6971/"> Ошибка attempt to index a function value при обращении к таблице из getCandlesByIndex</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте!<br />Есть функция чтения последней свечи, которая несколько лет работала стабильно, но последнее время, раз в несколько дней выдает ошибку(хотя свечи на графике есть).<br />Функция читает таблицу с одной последней свечой в tab2. Иногда при попытке обратиться к таблице по индексу &quot; if (tab2&#91;0&#93;==nil) then &quot; - вылетает ошибка &quot;attempt to index a function value (local &#39;tab2&#39;)&quot;<br />Добавил проверку tab2==nil, и она в момент ошибки не срабатывает, т.е. tab2 - задана.
====code====
<pre>function last_condle() -- самая последняя свеча
&nbsp;&nbsp;&nbsp;local tmp_max=getNumCandles(options.future.."_price")
&nbsp;&nbsp;&nbsp;local tab2, n1, tmpname=getCandlesByIndex(options.future.."_price", 0,tmp_max-1, 1) 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Костыль №1
&nbsp;&nbsp;&nbsp;if (tab2==nil) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say(" Ошибка 1748 - нет данных!!! - входим в режим ожидания данных tmp_max="..tmp_max)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (tab2==nil) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(731)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tab2, n1, tmpname=getCandlesByIndex(options.future.."_price", 0,tmp_max-1, 1) &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end 
&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;-- Костыль №2
&nbsp;&nbsp;&nbsp;if (tab2&#91;0&#93;==nil) then -- Тут иногда ошибка "attempt to index a function value (local 'tab2')"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say(" Ошибка 1739 - нет данных!!! - входим в режим ожидания данных tmp_max="..tmp_max)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (tab2&#91;0&#93;==nil) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(731)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tab2, n1, tmpname=getCandlesByIndex(options.future.."_price", 0,tmp_max-1, 1) &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end 
&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;return tab2&#91;0&#93;
end
</pre>
=============
Если я правильно понимаю, LUA считает что tab2 - функция? Но getCandlesByIndex не должен функий выдавать. Как это вылечить?<br /><br />LUA 5.4.1 <br />
			<i>10.12.2021 15:45:46, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60190/topic6971/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60190/topic6971/</guid>
			<pubDate>Fri, 10 Dec 2021 15:45:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
