<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Продолжение работы скрипта после OnMessage]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13868&amp;type=atom" />
	<updated>2018-06-21T12:54:31Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13868</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126329#p126329" />
			<content type="html"><![CDATA[<p>Да и освобождение должно быть последовательным. Как сделать красиво не представляю.</p>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2018-06-21T12:54:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126329#p126329</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126327#p126327" />
			<content type="html"><![CDATA[<p><strong>stealzy</strong>, так если после первого вызова ошибка, второго и т.д. быть уже не должно.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2018-06-21T12:25:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126327#p126327</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126326#p126326" />
			<content type="html"><![CDATA[<p><strong>YMP</strong> можно еще короче:<br /></p><div class="codebox"><pre><code>call func_1
if error err_1 := true
call func_2
if error err_2 := true
call func_3
err_3 := error ? true :
...
...
if err_3 free res_3
if err_2 free res_2
IfEqual err_1, 1, free res_1</code></pre></div>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2018-06-21T12:21:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126326#p126326</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126323#p126323" />
			<content type="html"><![CDATA[<p>Вполне. Я просто ещё не доходил своим разумением до таких тонкостей, стараясь пользовать стандартные принципы, которые в своей реализации сами беспокоятся об освобождении ресурсов, а то, что я таки инкрементирую в работу, удаляю/освобождаю в оконцове, перед &quot;ExitApp&quot;.</p><p>Мало опыта, мало практики, что подталкивает в первую очередь преследовать вопросы функциональности, а не оптимизации и тут я не могу похвастаться необходимостью использования &quot;GoTo&quot;. Наоборот, когда мне впервые попался на глаза этот оператор, меня соблазнила элементарная простота возможности попасть из текущего места в любое другое. Что я творил... Ужас! И потом мне было чрезвычайно сложно перейти пониманием к концепции циклов, что сейчас кажется даже смешным, но то была та ещё палка в колесе. Это как если бы одна нога была всю жизнь короче, от чего походка была бы хромой, а потом сделали операцию, откорректировав возможность правильного позиционирования, но в силу инерции походка всё равно повторяет моторику предыдущего опыта.</p><p>Не подумайте пожалуйста, что я противник &quot;GoTo&quot;, я лишь говорю, что им не стоит пользоваться там, где без него можно легко обойтись и в своей нынешней практике, я не помню ни одного момента, где мне бы категорично требовалось его применение. Поэтому, говоря, что я им не пользуюсь, подразумеваю слово <em>вообще</em>.</p><p>В конце концов, программирование - это творчество, в котором результат достижим различными способами и обходиться без &quot;GoTo&quot; = один из них. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-06-21T11:24:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126323#p126323</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126306#p126306" />
			<content type="html"><![CDATA[<p>Что касается выхода из функции через GoTo, то это просто нелогично. Функция должна вернуться к тому, кто её вызвал. Может и время возврата иметь значение. А в каких-то ситуациях GoTo удобно. Например, при ветвлении, где в конце нескольких веток нужно выполнить один и тот же код. Чтобы не прописывать его несколько раз, можно прыгать на метку с ним. Другой случай — реакция на ошибки после вызова нескольких подряд функций с освобождением каких-то создаваемых для них или получаемых от них ресурсов.<br /></p><div class="codebox"><pre><code>
call func_1
if error goto err_1
call func_2
if error goto err_2
call func_3
if error goto err_3
...
...
err_3:
    free res_3
err_2:
    free res_2
err 1:
    free res_1
</code></pre></div><p>В результате освобождение каждого ресурса прописано только один раз. А если писать это после каждого вызова, то они повторяются и нагромождаются, что может побудить просто забить на это дело.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2018-06-21T06:03:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126306#p126306</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126294#p126294" />
			<content type="html"><![CDATA[<p>Виноват, не проверил.</p><p>&quot;GoTo&quot; - не пользуюсь. Опасная штука. Злоупотребление грозит превратить код в &quot;<a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B0%D0%B3%D0%B5%D1%82%D1%82%D0%B8-%D0%BA%D0%BE%D0%B4">макароны</a>&quot;. Советую избегать его употребления чуть более, чем вообще, организуя подобное поведение циклами и таймерами.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-06-20T19:08:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126294#p126294</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126290#p126290" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
OnMessage(0xC, &quot;GetText&quot;)
Return

Block1:
    Msgbox, %x1%
    Return

GetText(wParam, lParam, msg, hwnd)
{
    global x1
    Params := StrGet(lParam)
    MsgBox %Params%
    StringSplit, Param, Params, |
    x1:=Param1
    SetTimer, Block1, -250
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2018-06-20T16:48:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126290#p126290</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126288#p126288" />
			<content type="html"><![CDATA[<p><strong>KusochekDobra</strong> Пишет &quot;Error: Cannot jump from inside a function to outside&quot;, указывая на строчку <br /></p><div class="codebox"><pre><code>Goto block1</code></pre></div>]]></content>
			<author>
				<name><![CDATA[BeaNeaLol]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39336</uri>
			</author>
			<updated>2018-06-20T15:10:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126288#p126288</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126287#p126287" />
			<content type="html"><![CDATA[<p>Объявите &quot;x1&quot; глобальной, а переход к метке поместите внутрь функции.<br /></p><div class="codebox"><pre><code>
Global x1
OnMessage(0xC, &quot;GetText&quot;)
GetText(wParam, lParam, msg, hwnd)
{
    Params := StrGet(lParam)
	MsgBox %Params%
    StringSplit, Param, Params, |
	x1:=Param1
	Goto block1
}

Block1:
    Msgbox, %x1%
	Goto Block1
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-06-20T14:59:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126287#p126287</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Продолжение работы скрипта после OnMessage]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=126283#p126283" />
			<content type="html"><![CDATA[<p>Нужно сделать так, чтобы после включения скрипта, он ждал OnMessage, а после получения переходил к Block1, и при этом сохранилось значение x1<br /></p><div class="codebox"><pre><code>
OnMessage(0xC, &quot;GetText&quot;)
GetText(wParam, lParam, msg, hwnd)
{
    Params := StrGet(lParam)
	MsgBox %Params%
    StringSplit, Param, Params, |
	x1:=Param1
}

Goto block1

Block1:
    Msgbox, %x1%
	Goto Block1
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[BeaNeaLol]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39336</uri>
			</author>
			<updated>2018-06-20T14:01:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=126283#p126283</id>
		</entry>
</feed>
