<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Почему неправильно работает &quot;if&quot; в колбэке]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Почему неправильно работает &quot;if&quot; в колбэке форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Thu, 30 Apr 2026 12:56:40 +0300</pubDate>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16300/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_JvqaBEIV" href="/user/2016/" bx-tooltip-user-id="2016">Алексей Ширяев</a> написал:<br />короче сделал я что-бы изначально при загрузке данных параметров из файла контролировалось присвоение им именно числового параметра с помощью &quot;tonumber&quot;. Вроде пока заработало.<br />Самое интересное, что при расчетах переменные ведут себя как обычные числа, а вот при сравнении - как строки.<br />=============<br />Поясняю:<br />Дело в том, что строки тоже сравниваются как числа. <br />поэтому луа работает быстрее всех других скриптовых языков. сравниваются не ASCII коды а хеш.<br />Так как вычисления выполняются над числами, то луа автоматом переводит формат из строки в числовое.<br /> а вот сравнивать можно и числа и строки, поэтому луа не может угадать,<br /> что Вы сравниваете и необходимо явно переводить формат. <br />
			<i>24.05.2016 14:52:58, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16300/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16300/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 14:52:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16298/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_SEQbi5k1" href="/user/2016/" bx-tooltip-user-id="2016">Алексей Ширяев</a> написал:<br />Самое интересное, что при расчетах переменные ведут себя как обычные числа, а вот при сравнении - как строки.<br />=============<br />Сразу видно, что документация по Lua читалась по диагонали. ;) <br />
			<i>24.05.2016 14:04:05, Constantin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16298/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16298/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 14:04:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16293/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			короче сделал я что-бы изначально при загрузке данных параметров из файла контролировалось присвоение им именно числового параметра с помощью &quot;tonumber&quot;. Вроде пока заработало.<br />Самое интересное, что при расчетах переменные ведут себя как обычные числа, а вот при сравнении - как строки. <br />
			<i>24.05.2016 12:09:43, Алексей Ширяев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16293/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16293/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 12:09:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16287/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_VReJxe4k" href="/user/62/" bx-tooltip-user-id="62">Николай  Камынин</a> написал:<br /><br />====quote====<br /> Алексей Ширяев &nbsp; написал:<br />if tbl_set.volume_opt &gt; tbl_set.volume_opt_ex then CHANGE_OPT_price = Send_OPT_Transaction() end -- эта строка приводит к ошибке &quot; attempt to compare number with string&quot; <br />=============<br />В сообщении об ошибке &nbsp;написано, что Вы пытаетесь сравнить число со строкой<br />следовательно надо написать так:<br /><br />if tonumber(tbl_set.volume_opt) &gt; tonumber(tbl_set.volume_opt_ex) &nbsp;then CHANGE_OPT_price = Send_OPT_Transaction() end<br />=============<br />уже пробую, но ведь это числовые переменные, там числа - количества лотов, которые много где контролируются и используются в вычислениях. <br />
			<i>24.05.2016 11:24:33, Алексей Ширяев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16287/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16287/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 11:24:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16285/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			а еще лучше написать так:<br />local x1=tonumber(tbl_set.volume_opt) <br />local x2=tonumber(tbl_set.volume_opt_ex)<br />if x1 and x2 and x1&gt;x2 &nbsp; then CHANGE_OPT_price = Send_OPT_Transaction() end <br />
			<i>24.05.2016 11:14:19, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16285/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16285/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 11:14:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16284/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_CclTkAsS" href="/user/2016/" bx-tooltip-user-id="2016">Алексей Ширяев</a> написал:<br />if tbl_set.volume_opt &gt; tbl_set.volume_opt_ex then CHANGE_OPT_price = Send_OPT_Transaction() end -- эта строка приводит к ошибке &quot;<B>attempt to compare number with string&quot;</B><br />=============<br />В сообщении об ошибке &nbsp;написано, что Вы пытаетесь сравнить число со строкой<br />следовательно надо написать так:<br /><br />if tonumber(tbl_set.volume_opt) &gt; tonumber(tbl_set.volume_opt_ex) &nbsp;then CHANGE_OPT_price = Send_OPT_Transaction() end <br />
			<i>24.05.2016 11:12:48, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16284/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16284/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 11:12:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16283/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добавил везде<br />message(tbl_set.volume_opt_ex+tbl_set.volume_opt)..&quot;\n&quot;)<br />все считается = 38<br />Однако скрипт вылетает. <br />
			<i>24.05.2016 11:11:23, Алексей Ширяев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16283/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16283/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 11:11:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16281/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В теле MAIN после OnOrder выполнение кода приводит к вылету.<br /><br /> &nbsp; &nbsp; &nbsp; &nbsp; message(&quot;MAIN:\ntbl_set.volume_opt = &quot;..tbl_set.volume_opt..&quot;\ntbl_set.volume_opt_ex = &quot;..tbl_set.volume_opt_ex..&quot;\n&quot;) &nbsp;<B>-- tbl_set.volume_opt = 20; tbl_set.volume_opt_ex = 18</B><br /> &nbsp; &nbsp; &nbsp; &nbsp; if tbl_set.volume_opt &gt; tbl_set.volume_opt_ex then CHANGE_OPT_price = Send_OPT_Transaction() end<B> -- эта строка приводит к ошибке &quot;attempt to compare number with string&quot;</B><br /><br />После того, как переменной tbl_set.volume_opt_ex в колбэке присваивается какое-либо значение, начинаются проблемы. Изредка система пишет что в переменной &quot;nil&quot; <br />
			<i>24.05.2016 11:05:32, Алексей Ширяев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16281/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16281/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 11:05:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Почему неправильно работает &quot;if&quot; в колбэке</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message16275/topic1815/">Почему неправильно работает &quot;if&quot; в колбэке</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			function OnOrder(order)<br /> &nbsp; local param = 0<br /> &nbsp; if order.trans_id == opt.trans_id then<br /> &nbsp; &nbsp; &nbsp;opt.order_num = order.order_num<br /> &nbsp; &nbsp; &nbsp;WAIT_answer = false<br /> &nbsp; &nbsp; &nbsp;if order.balance == 0 then tbl_set.flag = &quot;Off&quot; end<br /> &nbsp; &nbsp; &nbsp;param = tbl_set.volume_opt - order.balance<br /><br />message(&quot;OnOrder1:\ntbl_set.volume_opt = &quot;..tbl_set.volume_opt..&quot;\ntbl_set.volume_opt_ex = &quot;..tbl_set.volume_opt_ex..&quot;\nparam = &quot;..param..&quot;\n&quot;) -- tbl_set.volume_opt = 20; tbl_set.volume_opt_ex = 18; param = 18<br /><br /> &nbsp; &nbsp; &nbsp;if tbl_set.volume_opt_ex ~= param then &nbsp; &nbsp; &nbsp;-- несмотря на то, что tbl_set.volume_opt_ex = param = 18 скрипт входит внутрь оператора &quot;if&quot;<br /><br />message(&quot;OnOrder2:\ntbl_set.volume_opt = &quot;..tbl_set.volume_opt..&quot;\ntbl_set.volume_opt_ex = &quot;..tbl_set.volume_opt_ex..&quot;\nparam = &quot;..param..&quot;\n&quot;) -- tbl_set.volume_opt = 20; tbl_set.volume_opt_ex = 18; param = 18<br /><br /> &nbsp; &nbsp; &nbsp; &nbsp; tbl_set.volume_opt_ex = param<br /> &nbsp; &nbsp; &nbsp; &nbsp; FUT_Ex_flag = true<br /> &nbsp; &nbsp; &nbsp; &nbsp; SAVE_Settings_flag = true<br /> &nbsp; &nbsp; &nbsp;end<br /> &nbsp; elseif order.trans_id == fut.trans_id then<br /> &nbsp; &nbsp; &nbsp;fut.order_num = order.order_num<br /> &nbsp; &nbsp; &nbsp;if order.balance == 0 then<br /> &nbsp; &nbsp; &nbsp; &nbsp; tbl_set.volume_fut_ex = tbl_set.volume_fut_ex + order.qty<br /> &nbsp; &nbsp; &nbsp; &nbsp; SAVE_Settings_flag = true<br /> &nbsp; &nbsp; &nbsp;end<br /> &nbsp; end<br />end <br />
			<i>24.05.2016 10:03:13, Алексей Ширяев.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message16275/topic1815/</link>
			<guid>http://forum.quik.ru/messages/forum10/message16275/topic1815/</guid>
			<pubDate>Tue, 24 May 2016 10:03:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
