<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Запись в таблицу - вопрос.]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Запись в таблицу - вопрос. форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Thu, 23 Apr 2026 23:26:32 +0300</pubDate>
		<item>
			<title>Запись в таблицу - вопрос.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27916/topic3236/">Запись в таблицу - вопрос.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Огромнейшее спасибо за ответ! <br />
			<i>27.11.2017 08:08:01, Optimus1 Optimus1.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27916/topic3236/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27916/topic3236/</guid>
			<pubDate>Mon, 27 Nov 2017 08:08:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в таблицу - вопрос.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27911/topic3236/">Запись в таблицу - вопрос.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_QMvBd7Pe" href="/user/787/" bx-tooltip-user-id="787">Optimus1 Optimus1</a> написал:<br />То есть, когда в данном случае выполнилось условие If then, сама таблица t_id по сути еще не создана ?<br />=============<br />Да<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_8ar0a4tp" href="/user/787/" bx-tooltip-user-id="787">Optimus1 Optimus1</a> написал:<br />А при каком тогда заходе интерпретатор заглянет внутрь функции ?<br />=============<br />В общем случае: тогда, когда интерпретатор встретит команду собственно вызова этой функции (main(), CreateTable() и т.п.). Вызов самой первой функции программы делается из тела (body) стартового модуля. Далее команды вызовов функций будут уже отрабатываться по мере нахождения их интерпретатором внутри текущей исполняемой функции.<br /><br />В QLua: для Quik Вы пишете не самостоятельную (имеющую собственную точку старта) программу, а лишь описание набора колбеков, которые QUIK по мере необходимости будет вызывать.<br />На стартовом проходе интерпретатор QLua выполняет инструкции body вашего модуля только лишь для того, чтобы в результате получить в глобальных переменных с зарезервированными именами (OnInit, main, OnStop, OnOrder и т.д) адреса написанных Вами функций-колбэков. Если QLua в результате не получит в переменной main адреса функции, то на этом все и закончится. Остальные зарезервированные функции определять не обязательно. Потом он вызовет OnInit(), если найдет там адрес функции (в Вашем случае вызова не будет, т.к. у Вас эта функция не описана). Далее Quik создаст отдельный поток для Вашего скрипта, из которого вызовет main(). В своем потоке Quik, по мере необходимости, будет вызывать остальные ваши колбеки, и т.д.<br /><br />Может быть Вам проще будет понять действия интерпретатора, если Вы внимательно изучите синтаксис Lua.<br />Дело в том, что в исходном синтаксисе Lua нет такого такой команды:<br />function myCode()<br />...<br />end<br />Такая запись - это так называемый синтаксический &quot;сахар&quot;, упрощение записи инструкций для приведения их к более привычному для программиста виду.<br />Реально, до начал интерпретации, эта запись преобразуется к виду:<br />myCode = function()<br />...<br />end<br />И тогда становится ясно, что интерпретатору, встретив такую инструкцию, просто незачем лезть внутрь тела функции. Вы же всего лишь поручили ему запомнить адрес функции в переменной myCode.<br /><br />И таких синтаксических &quot;сахаров&quot; в Lua не мало. Изучите их, и писать программу сразу станет проще. <br />
			<i>27.11.2017 00:30:05, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27911/topic3236/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27911/topic3236/</guid>
			<pubDate>Mon, 27 Nov 2017 00:30:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в таблицу - вопрос.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27910/topic3236/">Запись в таблицу - вопрос.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			А при каком тогда заходе интерпретатор заглянет внутрь функции ? <br />
			<i>26.11.2017 22:22:16, Optimus1 Optimus1.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27910/topic3236/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27910/topic3236/</guid>
			<pubDate>Sun, 26 Nov 2017 22:22:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в таблицу - вопрос.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27909/topic3236/">Запись в таблицу - вопрос.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			То есть, когда в данном случае выполнилось условие If then, сама таблица t_id по сути еще не создана ? <br />
			<i>26.11.2017 22:08:36, Optimus1 Optimus1.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27909/topic3236/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27909/topic3236/</guid>
			<pubDate>Sun, 26 Nov 2017 22:08:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в таблицу - вопрос.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27903/topic3236/">Запись в таблицу - вопрос.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Для начала, уточните для себя базовые принципы работы lua-интерпретатора.<br /><br />Присвоение переменных G1, q, g и т.д., а также блок if..then..end у Вас находятся в теле (body) модуля.<br />Все эти команды выполняются интерпретатором один раз при первом проходе исходного текста текущего модуля lua, т.е. на этапе, когда интерпретатор даже не заглядывает внутрь текста описанных в модуле функций, а только запоминает адреса их входных точек (другими словами, на этом этапе интерпретатор лишь присваивает глобальным переменным main и CreateTable адрес соответствующей функции, но, повторюсь, внутрь функций он при этом не заглядывает).<br /><br />Таким образом, Ваш блок if..then..end, находящийся в body модуля, выполняется интерпретатором один раз еще даже до вызова OnInit, не говоря уж об main. <br />
			<i>26.11.2017 20:57:12, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27903/topic3236/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27903/topic3236/</guid>
			<pubDate>Sun, 26 Nov 2017 20:57:12 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в таблицу - вопрос.</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message27878/topic3236/">Запись в таблицу - вопрос.</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте,<br /><br />Немного запутался, подскажите пожалуйста, почему при срабатывании условия If then, в 1 строку созданной таблицы не записывается заданный текст ?<br />
====code====
<pre>function main()

CreateTable();

&nbsp;&nbsp; while is_run do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(1000)

 end

 end
--------------------------------------------------------------------------------------
 --Функция создания таблицы: Начало

function CreateTable()

t_id = AllocTable();

AddColumn(t_id, 0, "Код Бумаги", true, QTABLE_INT_TYPE, 15)
AddColumn(t_id, 1, "Условие", true, QTABLE_INT_TYPE, 15)
AddColumn(t_id, 2, "Статус", true, QTABLE_INT_TYPE, 15)
AddColumn(t_id, 3, "Время", true, QTABLE_INT_TYPE, 15)
AddColumn(t_id, 4, "Цена", true, QTABLE_INT_TYPE, 15)


t = CreateWindow(t_id); 

SetWindowCaption(t_id, "Таблица"); 

for i=0, 3, 1 do
InsertRow(t_id, -1); 


end; 

end
 --Функция создания таблицы: Конец
------------------------------------------------------------------------

local G1=getNumCandles("GAZP_Price")
q,g,w1=getCandlesByIndex("GAZP_Pricet", 0, G1-2, 2)
GAZP_Price_now = q&#91;0&#93;.close

GAZP_Price_condition=0

if GAZP_Price_now =&#62; GAZP_Price_condition then

message("Условие сработало",1)

SetCell(t_id, 1, 1, "текст1")
SetCell(t_id, 1, 2, "текст2")
SetCell(t_id, 1, 3, "текст3")

end
</pre>
============= <br />
			<i>25.11.2017 11:03:59, Optimus1 Optimus1.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message27878/topic3236/</link>
			<guid>http://forum.quik.ru/messages/forum10/message27878/topic3236/</guid>
			<pubDate>Sat, 25 Nov 2017 11:03:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
