<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Перезапуск LUA-скрипта из-за ошибок]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Перезапуск LUA-скрипта из-за ошибок форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 11 Apr 2026 12:26:14 +0300</pubDate>
		<item>
			<title>Перезапуск LUA-скрипта из-за ошибок</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44791/topic5408/">Перезапуск LUA-скрипта из-за ошибок</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ayA8YwGT" href="/user/1222/" bx-tooltip-user-id="1222">Anton</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/13936/" target="_blank" rel="nofollow">Иван</a></noindex> написал:<br />мне приходится закрывать созданную таблицу<br />=============<br /> Вот для этого и нужно ошибки на границе ловить, чтобы подчистить за скриптом все им созданное. Для этого в луа есть метаметоды __gc, но в квике при ошибке они не работают, баг пока еще не поправили. Поэтому придется извращаться с ловлей ошибок pcall&#39;ом. Что же касается автоматического перезапуска, что-то мне не думается, что это здравая идея. Запустите вы скрипт тестировать одним контрактом и уйдете, он купит контракт - рухнет, перезапустится через секунду, купит еще один - рухнет, и так на все плечи. Лет 15 назад у меня еще из старого велса так скрипт потестировался. Благо в плюс по итогу, а могло бы и не в плюс. Если скрипт упал, то пусть лежит уже до выяснения причины, это не есть один из допустимых сценариев его работы.<br />=============<br />Да, пожалуй лучше так. <br />
			<i>12.05.2020 22:36:17, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44791/topic5408/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44791/topic5408/</guid>
			<pubDate>Tue, 12 May 2020 22:36:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Перезапуск LUA-скрипта из-за ошибок</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44747/topic5408/">Перезапуск LUA-скрипта из-за ошибок</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_FRqOpb0S" href="/user/13936/" bx-tooltip-user-id="13936">Иван</a> написал:<br />мне приходится закрывать созданную таблицу<br />=============<br />Вот для этого и нужно ошибки на границе ловить, чтобы подчистить за скриптом все им созданное. Для этого в луа есть метаметоды __gc, но в квике при ошибке они не работают, баг пока еще не поправили. Поэтому придется извращаться с ловлей ошибок pcall&#39;ом. Что же касается автоматического перезапуска, что-то мне не думается, что это здравая идея. Запустите вы скрипт тестировать одним контрактом и уйдете, он купит контракт - рухнет, перезапустится через секунду, купит еще один - рухнет, и так на все плечи. Лет 15 назад у меня еще из старого велса так скрипт потестировался. Благо в плюс по итогу, а могло бы и не в плюс. Если скрипт упал, то пусть лежит уже до выяснения причины, это не есть один из допустимых сценариев его работы. <br />
			<i>12.05.2020 12:18:41, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44747/topic5408/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44747/topic5408/</guid>
			<pubDate>Tue, 12 May 2020 12:18:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Перезапуск LUA-скрипта из-за ошибок</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44742/topic5408/">Перезапуск LUA-скрипта из-за ошибок</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_e005b6Nm" href="/user/1222/" bx-tooltip-user-id="1222">Anton</a> написал:<br />Вы защитили только непосредственно тело включаемого скрипта, если он создаст какие-то функции и вы их потом вызовете из мейна например и будет ошибка в этой функции, она точно так же пролетит до квика. Заворачивать в pcall надо мейн и все колбеки, то есть ловить ошибки на границе с квиком. Ошибка при загрузке скрипта (типа синтаксической ошибки или не загрузилась длл) лучше вообще не ловить, пусть рушится, на этом этапе еще безопасно.<br />=============<br />Поясню что мне не очень удобно.<br />Когда скрипт падает - речь про весь скрипт, а не про те куски кода что обернул в dofile() - мне приходится закрывать созданную таблицу, снова открывать сервис, запускать скрипт, он создает таблицу, выравнивать ее, перемещать. Хотелось бы что бы исправил ошибку в файле Lua и он продолжил работу скажем через секунду. <br />
			<i>12.05.2020 11:58:46, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44742/topic5408/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44742/topic5408/</guid>
			<pubDate>Tue, 12 May 2020 11:58:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Перезапуск LUA-скрипта из-за ошибок</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44734/topic5408/">Перезапуск LUA-скрипта из-за ошибок</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вы защитили только непосредственно тело включаемого скрипта, если он создаст какие-то функции и вы их потом вызовете из мейна например и будет ошибка в этой функции, она точно так же пролетит до квика. Заворачивать в pcall надо мейн и все колбеки, то есть ловить ошибки на границе с квиком. Ошибка при загрузке скрипта (типа синтаксической ошибки или не загрузилась длл) лучше вообще не ловить, пусть рушится, на этом этапе еще безопасно. <br />
			<i>12.05.2020 11:39:39, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44734/topic5408/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44734/topic5408/</guid>
			<pubDate>Tue, 12 May 2020 11:39:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Перезапуск LUA-скрипта из-за ошибок</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44731/topic5408/">Перезапуск LUA-скрипта из-за ошибок</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_HhPOaPRu" href="/user/13936/" bx-tooltip-user-id="13936">Иван</a> написал:<br /> <br />====quote====<br /> &nbsp; &nbsp;s_mike@rambler.ru написал:<br />Что мешает написать такой скрипт самому? Все средства для этого есть.<br />=============<br /> У меня получилось это сделать только для включаемых фаллов - пример: &nbsp;
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Alert 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;&nbsp;callResult, result&nbsp;&nbsp;=&nbsp;&nbsp;pcall(dofile,&nbsp;&nbsp;getScriptPath () .. "&#92;&#92;Script.lua")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;callResult&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- все в порядке, result это то, что вернула функция dofile 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- result это сообщение об ошибке 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message (tostring(result));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep ( 5000 );
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end ;
&nbsp;&nbsp;</pre>
=============
 Но как это сделать для всего скрипта в целом?<br />=============<br />Причем это включение идет в цикле while() <br />
			<i>12.05.2020 11:24:30, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44731/topic5408/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44731/topic5408/</guid>
			<pubDate>Tue, 12 May 2020 11:24:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Перезапуск LUA-скрипта из-за ошибок</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44729/topic5408/">Перезапуск LUA-скрипта из-за ошибок</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_AiwCp43D" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br />Что мешает написать такой скрипт самому? Все средства для этого есть.<br />=============<br />У меня получилось это сделать только для включаемых фаллов - пример: 
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Alert
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local callResult, result = pcall(dofile, getScriptPath().."&#92;&#92;Script.lua")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if callResult then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- все в порядке, result это то, что вернула функция dofile
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- result это сообщение об ошибке
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(tostring(result));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(5000);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;
</pre>
=============
Но как это сделать для всего скрипта в целом? <br />
			<i>12.05.2020 11:24:04, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44729/topic5408/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44729/topic5408/</guid>
			<pubDate>Tue, 12 May 2020 11:24:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Перезапуск LUA-скрипта из-за ошибок</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44727/topic5408/">Перезапуск LUA-скрипта из-за ошибок</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Что мешает написать такой скрипт самому? Все средства для этого есть. <br />
			<i>12.05.2020 11:15:47, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44727/topic5408/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44727/topic5408/</guid>
			<pubDate>Tue, 12 May 2020 11:15:47 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Перезапуск LUA-скрипта из-за ошибок</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44725/topic5408/">Перезапуск LUA-скрипта из-за ошибок</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Каждый раз когда в скрипте случается ошибка, приходится останавливать скрипт через сервисы, и по новому его запускать.<br />Возможно ли &nbsp;как-то сделать так, что бы выпала ошибка - обычно ее смотрю в окне &quot;Доступные скрипты&quot;, отредактировал скрипт и он перезапустился или продолжил работу дальше? <br />
			<i>12.05.2020 10:52:32, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44725/topic5408/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44725/topic5408/</guid>
			<pubDate>Tue, 12 May 2020 10:52:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
