<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Ошибка SetValue]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Ошибка SetValue форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 10 Apr 2026 11:06:04 +0300</pubDate>
		<item>
			<title>Ошибка SetValue</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27428/topic3169/">Ошибка SetValue</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			вместо кучи message используй сообщение отладки PrintDbgStr(&quot;QLua: row=&quot; .. row .. &quot; col_ind=&quot; .. col_ind)<br />self.data&#91;row&#93;&#91;&#93;<br />и <br />просмотр <noindex><a href="https://docs.microsoft.com/en-us/sysinternals/downloads/debugview" target="_blank" rel="nofollow">https://docs.microsoft.com/en-us/sysinternals/downloads/debugview</a></noindex><br />при открытии сделай фильтр по &quot;QLua&quot; <br />
			<i>27.10.2017 13:44:44, Eldar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27428/topic3169/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27428/topic3169/</guid>
			<pubDate>Fri, 27 Oct 2017 13:44:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка SetValue</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27423/topic3169/">Ошибка SetValue</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Возможно проверку существования <B>self.data&#91;row&#93;&#91;col_ind&#93;</B> делать и не надо, поэкспирементируйте, думаю достаточно и так:
====code====
<pre>if self.data and self.data&#91;row&#93; and self.data&#91;row&#93;&#91;col_ind&#93;==data then return true end
</pre>
============= <br />
			<i>27.10.2017 11:27:21, Nikolay Pavlov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27423/topic3169/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27423/topic3169/</guid>
			<pubDate>Fri, 27 Oct 2017 11:27:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка SetValue</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27421/topic3169/">Ошибка SetValue</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_qyNpZO7j" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Вы можете видеть, что я пытаюсь отловить эту ошибку через message, но он спокойно проходит эту проверку.<br />Подскажите где искать иэтот &quot;нил&quot;<br />=============<br />Добрый день.<br />Предположу, что дело не в переменных
====code====
<pre>&nbsp;&nbsp; row, col_name, data, col_ind</pre>
=============
раз скрипт не заходит внутрь
====code====
<pre>&nbsp;&nbsp; if row==nil or col_name==nil or data==nil or col_ind==nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message ((row&nbsp;&nbsp;or "nil").." | "..(col_name&nbsp;&nbsp;or "nil").." | "..(data&nbsp;&nbsp;or "nil").." | "..(col_ind or "nil")),1)
&nbsp;&nbsp; end&nbsp;&nbsp; </pre>
=============
значит они имеют какое-то значение отличное от nil.<br />Перепишите проблемную строчку вот так:
====code====
<pre>if self.data and self.data&#91;row&#93; and self.data&#91;row&#93;&#91;col_ind&#93; and self.data&#91;row&#93;&#91;col_ind&#93;==data then return true end</pre>
=============
Дословно - если s<B>elf.data не nil</B> И <B>таблица self.data имеет запись с ключом row</B> И <B>таблица self.data&#91;row&#93; имеет запись col_ind </B>тогда выполняем проверку значений этой многоуровневой таблицы. <br />
			<i>27.10.2017 11:20:12, Nikolay Pavlov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27421/topic3169/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27421/topic3169/</guid>
			<pubDate>Fri, 27 Oct 2017 11:20:12 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка SetValue</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27419/topic3169/">Ошибка SetValue</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Речь идёт про строчку 11-ю сверху <br />
			<i>27.10.2017 10:48:45, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27419/topic3169/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27419/topic3169/</guid>
			<pubDate>Fri, 27 Oct 2017 10:48:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка SetValue</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27418/topic3169/">Ошибка SetValue</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вот функция для установки значения в ячейке.<br />
====code====
<pre>function QTable:SetValue(row, col_name, data, formatted)
&nbsp;&nbsp;&nbsp;-- Установить значение в ячейке
&nbsp;&nbsp;&nbsp;local col_ind = self.columns&#91;col_name&#93;.id or nil&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;if col_ind == nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;local col_type = self.columns&#91;col_name&#93;.c_type
&nbsp;&nbsp;&nbsp;if row==nil or col_name==nil or data==nil or col_ind==nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message ((row&nbsp;&nbsp;or "nil").." | "..(col_name&nbsp;&nbsp;or "nil").." | "..(data&nbsp;&nbsp;or "nil").." | "..(col_ind or "nil")),1)
&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;if self.data&#91;row&#93;&#91;col_ind&#93;==data then return true end
&nbsp;&nbsp;&nbsp;self.data&#91;row&#93;&#91;col_ind&#93;=data
&nbsp;&nbsp;&nbsp;local col_type = self.columns&#91;col_name&#93;.c_type
&nbsp;&nbsp;&nbsp;-- если для числового столбца дано НЕчисловое значение, то применяем к нему tonumber
&nbsp;&nbsp;&nbsp;if type(data) ~= "number" and (col_type==QTABLE_INT_TYPE or col_type==QTABLE_DOUBLE_TYPE or col_type==QTABLE_INT64_TYPE) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data = tonumber(data) or 0
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;-- если для НЕстрокового значения уже дан отформатированный вариант, то сначала используется он
&nbsp;&nbsp;&nbsp;if formatted and col_type~=QTABLE_STRING_TYPE and col_type~=QTABLE_CACHED_STRING_TYPE then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return SetCell(self.t_id, row, col_ind, formatted, data)
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;-- если для столбца задана функция форматирования, то она используется
&nbsp;&nbsp;&nbsp;local ff = self.columns&#91;col_name&#93;.format_function
&nbsp;&nbsp;&nbsp;if type(ff) == "function" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- в качестве строкового представления используется
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- результат выполнения функции форматирования
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if col_type==QTABLE_STRING_TYPE or col_type==QTABLE_CACHED_STRING_TYPE then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return SetCell(self.t_id, row, col_ind, ff(data))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return SetCell(self.t_id, row, col_ind, ff(data), data)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if col_type==QTABLE_STRING_TYPE or col_type==QTABLE_CACHED_STRING_TYPE then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return SetCell(self.t_id, row, col_ind, tostring(data))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return SetCell(self.t_id, row, col_ind, tostring(data), data)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
end</pre>
=============
<br />Она &nbsp;служит мне верой и правдой. Но иногда она выдает такую ошибку:<br /><img src="https://content.screencast.com/users/astro-12/folders/Snagit/media/13378afb-d7be-43a4-b30a-a31544d93c41/10.27.2017-10.44.png" alt="Пользователь добавил изображение" border="0" /><br />Это он ругается на строчку 	if self.data&#91;row&#93;&#91;col_ind&#93;==data then return true end<br />Внутри колбека это не приводит к выбиванию скрипта, поэтому я продолжаю работать с ней. Важно: эта ошибка приходит в первую секунду после запуска, когда какое то значение ещё не определено. Потом всё работает хорошо.<br />Вы можете видеть, что я пытаюсь отловить эту ошибку через message, но он спокойно проходит эту проверку.<br />Подскажите где искать иэтот &quot;нил&quot; <br />
			<i>27.10.2017 10:47:21, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27418/topic3169/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27418/topic3169/</guid>
			<pubDate>Fri, 27 Oct 2017 10:47:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
