<?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>Sat, 02 May 2026 15:32:12 +0300</pubDate>
		<item>
			<title>Событие закрытие терминала</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48450/topic5801/">Событие закрытие терминала</a></b> <i>OnClose() OnStop(flag)</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br /><br />Остановка скрипта и выгрузка модуля qlua.dll происходит когда основное окно терминала уже закрыто.<br />Т.о. функция message() ничего не делает, т.к. выводить сообщение уже некуда.<br />Сами колбеки отрабатывают, в этом можно убедиться выполнив запись чего-либо в файл. <br />
			<i>18.09.2020 07:38:14, Egor Zaytsev.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48450/topic5801/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48450/topic5801/</guid>
			<pubDate>Fri, 18 Sep 2020 07:38:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Событие закрытие терминала</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48380/topic5801/">Событие закрытие терминала</a></b> <i>OnClose() OnStop(flag)</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Потребовалось кое-что сделать при событии закрытия терминала.<br />Но OnClose() и OnStop(flag) не выводит системные сообщения и не выполняет код внутри.<br />Если отключить qlua.dll в окне «Версии компонентов и плагинов», всё работает по инструкции.<br />Как можно объяснить такое поведение?<br />
====code====
<pre>function OnInit() -- Функция вызывается терминалом QUIK перед вызовом функции main().
&nbsp;&nbsp; is_run = true
&nbsp;&nbsp; return
end -- выход из функции: OnInit()

function main() -- Функция, реализующая основной поток выполнения в скрипте. Для ее выполнения терминал QUIK создает отдельный поток.
&nbsp;&nbsp; while is_run do -- повторяющийся цикл, пока is_run = true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(1000)
&nbsp;&nbsp; end -- выход из цикла: повторяющийся цикл, пока is_run = true
&nbsp;&nbsp; return
end -- выход из функции: main()

function OnClose() -- Функция вызывается перед закрытием терминала QUIK и при выгрузке файла qlua.dll.
-- Под выгрузкой файла qlua.dll подразумевается отключение плагина QLua
-- в окне «Версии компонентов и плагинов» (см. п. 1.9. Раздела 1 Руководства
-- пользователя QUIK).
&nbsp;&nbsp;&nbsp;message("OnCl ose="..tostring(1),1) -- отладка скрипта с выводом системного сообщения
end

function OnStop(flag) -- Функция вызывается терминалом QUIK при остановке скрипта из диалога управления и при закрытии терминала QUIK.
-- При остановке или удалении работающего скрипта Lua из диалога управления «Доступные
-- скрипты» параметр вызова flag принимает значение «1». При закрытии терминала QUIK –
-- значение «2».
&nbsp;&nbsp;&nbsp;message("OnStop flag="..tostring(flag),1) -- отладка скрипта с выводом системного сообщения
&nbsp;&nbsp;&nbsp;is_run = false
&nbsp;&nbsp;&nbsp;return 5000
end
</pre>
============= <br />
			<i>16.09.2020 08:52:30, Михаил Понамаренко.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48380/topic5801/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48380/topic5801/</guid>
			<pubDate>Wed, 16 Sep 2020 08:52:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
