<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Как бороться с nil?]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Как бороться с nil? форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Thu, 16 Apr 2026 02:36:45 +0300</pubDate>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message54175/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_uHiY7wCY" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />вы заблуждаетесь<br />=============<br />Признаю. Для сравнений равно/не равно действительно работает. Не работает только для сравнений больше/меньше... <br />Но у меня-то проверка равенства.. почему вообще тогда ошибка возникла? Рядом в коде больше сравнений нет. Это на случай, если я строкой ошибся..<br />Ну ладно, вопрос в другом. Возможно ли такое, что функция getFuturesHolding возвращает таблицу, а в ней поле totalnet = nil? И в каких случаях? Просто надо понять, как обрабатывать такой результат... <br />
			<i>24.03.2021 17:18:08, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message54175/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message54175/topic4200/</guid>
			<pubDate>Wed, 24 Mar 2021 17:18:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message54169/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_L5i4osfY" href="/user/11369/" bx-tooltip-user-id="11369">Сергей</a> написал:<br />Возможно такое сравнение и допустимо<br />=============<br />В оригинальном Lua да.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_T0yi8Kfh" href="/user/11369/" bx-tooltip-user-id="11369">Сергей</a> написал:<br />Луа машина в Квике выдает ошибку при сравнении переменных, если одна из них nil...<br />=============<br />Хотел было написать, что вы заблуждаетесь, но вспомнил про <noindex><a href="https://forum.quik.ru/messages/forum10/message48639/topic5823/#message48639" target="_blank" rel="nofollow">странные ошибки</a></noindex>, с которыми сам сталкивался в QUIK. Поэтому настаивать не буду.<br /><br />Передаю эстафету техподдержке. <br />
			<i>24.03.2021 16:48:17, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message54169/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message54169/topic4200/</guid>
			<pubDate>Wed, 24 Mar 2021 16:48:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message54167/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_k5jM6bPq" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />Кодif CheckPos ~= nil and POS ~= CheckPos.totalnet thenТакое сравнение вполне допустимо, даже если POS или totalnet есть nilОшибка в другом месте, смотрите номер строки с ошибкой.<br />=============<br />Конечно я посмотрел номер строки. И ошибка возникает именно в этой строке со сравнением.<br />Я знаком с Луа только в пределах Квика. Возможно такое сравнение и допустимо, но Луа машина в Квике выдает ошибку при сравнении переменных, если одна из них nil...<br />Вообще данный случай возник лишь один раз за всё время работы скрипта. Но лучше уж знать причины возникновения ошибки. &nbsp; <br />
			<i>24.03.2021 15:54:43, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message54167/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message54167/topic4200/</guid>
			<pubDate>Wed, 24 Mar 2021 15:54:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message54165/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			О! И у меня то же самое! Я запрограммировал алгоритм снятия не сработавших (или частично сработавших) заявок, всё работает, но... не всегда: время от времени скрипт вылетает с похожей диагностикой. Стал проверять на nil возвращаемую таблицу - не помогает. <img src="http://forum.quik.ru/upload/main/smiles/5/icon_sad.png" border="0" data-code=":sad:" data-definition="SD" alt=":sad:" style="width:16px;height:16px;" title="Печально" class="bx-smile" /> &nbsp; <br />
			<i>24.03.2021 13:09:48, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message54165/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message54165/topic4200/</guid>
			<pubDate>Wed, 24 Mar 2021 13:09:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message54164/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			====code====
<pre>if CheckPos ~= nil and POS ~= CheckPos.totalnet then</pre>
=============
<br />Такое сравнение вполне допустимо, даже если POS или totalnet есть nil<br />Ошибка в другом месте, смотрите номер строки с ошибкой. <br />
			<i>24.03.2021 13:06:31, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message54164/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message54164/topic4200/</guid>
			<pubDate>Wed, 24 Mar 2021 13:06:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message54162/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Позвольте продолжить тему.<br />Есть фрагмент кода:<br />
====code====
<pre>local CheckPos = getFuturesHolding('MC0061900000',ACCOUNT,SEC_CODE,0)

if CheckPos ~= nil and POS ~= CheckPos.totalnet then
&nbsp;&nbsp;&nbsp;&nbsp;...
end&nbsp;&nbsp;</pre>
=============
<p>В какой-то момент выпала ошибка attempt to compare with nil. </p><p>Переменная POS изначально определяется, как равная 0 и затем ей присваиваются разные значения. То есть она никогда не бывает nil. CheckPos тоже проверяется на nil, значит ошибка возникает из-за поля totalnet.</p><p>Я всегда думал, что если getFuturesHolding не возвращает nil, то все поля таблицы содержат какие-то значения и не бывают пустыми (например нули). Получается, что в определенные моменты допускается, что поля таблицы могут быть nil? Это результат ошибки или всё таки это допустимо? В каких тогда случаях может возникать nil в поле totalnet?</p> <br />
			<i>24.03.2021 12:56:51, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message54162/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message54162/topic4200/</guid>
			<pubDate>Wed, 24 Mar 2021 12:56:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message35816/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Да все получилось, работает). Спасибо. <br />
			<i>16.01.2019 06:57:47, Андрей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message35816/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message35816/topic4200/</guid>
			<pubDate>Wed, 16 Jan 2019 06:57:47 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message35795/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_mk6EIkNI" href="/user/3010/" bx-tooltip-user-id="3010">Алексей</a> написал:<br />Вторую строчку можно записать короче: 
====code====
<pre>&nbsp;&nbsp;start6&nbsp;&nbsp;=&nbsp;&nbsp;fh&nbsp;&nbsp;and&nbsp;&nbsp;fh.totalnet&nbsp;&nbsp;or&nbsp;&nbsp; 0&nbsp;&nbsp; </pre>
=============
 <br />=============<br />Спасибо всем большое за помощь, посробую вечером) <br />
			<i>15.01.2019 11:51:07, Андрей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message35795/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message35795/topic4200/</guid>
			<pubDate>Tue, 15 Jan 2019 11:51:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message35787/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Можно еще проверить на тип возвращаемых данных
====code====
<pre>type(fh) == "table"</pre>
============= <br />
			<i>15.01.2019 05:31:31, Владимир.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message35787/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message35787/topic4200/</guid>
			<pubDate>Tue, 15 Jan 2019 05:31:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message35786/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вторую строчку можно записать короче:
====code====
<pre>start6 = fh and fh.totalnet or 0</pre>
============= <br />
			<i>14.01.2019 22:20:41, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message35786/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message35786/topic4200/</guid>
			<pubDate>Mon, 14 Jan 2019 22:20:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message35785/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			====code====
<pre>fh = getFuturesHolding('SPBFUT000000','SPBFUT000pf','BRG9', 0)
if fh then start6 = fh.totalnet else start6 = 0 end
</pre>
============= <br />
			<i>14.01.2019 22:18:11, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message35785/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message35785/topic4200/</guid>
			<pubDate>Mon, 14 Jan 2019 22:18:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как бороться с nil?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message35784/topic4200/">Как бороться с nil?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			При запуске программы первый раз такой вот код выдает ошибку 
====code====
<pre>start6 = tonumber(getFuturesHolding('SPBFUT000000','SPBFUT000pf','BRG9', 0).totalnet) 
...
...am Files&#92;QUIK-Junior&#92;LuaIndicators&#92;m2_14_BRG9_M1.lua:40: attempt to index a nil value
</pre>
=============
но если я куплю бумагу и потом ее продам например по рыночной, то после этого программа с таким кодом спокойно работает дальше и проверяет количество бумаг на остатке в различные периоды работы кода. По идее понимаю, что надо как то сделать проверку на nil и если nil, то переменной start6 присвоить ноль, но что то методом тыка пока не получилось это сделать, пробовал и так и эдак:
====code====
<pre>start6 = tonumber(getFuturesHolding('SPBFUT000000','SPBFUT000pf','BRG9', 0).totalnet) or 0
...
if getFuturesHolding('SPBFUT000000','SPBFUT000pf','BRG9', 0).totalnet==nil then
start6=0
</pre>
=============
 все равно программа ругается на код, подскажите пожалуйста как можно решить эту задачу? &nbsp; <br />
			<i>14.01.2019 21:48:52, Андрей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message35784/topic4200/</link>
			<guid>http://forum.quik.ru/messages/forum10/message35784/topic4200/</guid>
			<pubDate>Mon, 14 Jan 2019 21:48:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
