<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6832&amp;type=atom" />
	<updated>2012-02-18T19:50:09Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6832</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57036#p57036" />
			<content type="html"><![CDATA[<p>Ну и на том спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-02-18T19:50:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57036#p57036</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57035#p57035" />
			<content type="html"><![CDATA[<p>Если вы «всё поняли» про действие Gosub, то мне нечего добавить к сказанному. Повторяться в четвёртый раз не буду, увольте <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-02-18T19:43:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57035#p57035</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57033#p57033" />
			<content type="html"><![CDATA[<p>Не совсем.<br />Про действие GoSub я всё понял после вашего примера.<br />Но вы меня чуть запутали вот этой фразой<br /></p><div class="quotebox"><blockquote><p>Для пользователя различия при использовании функций(|процедур) или Меток и GoSub заключается в «области видимости» переменных. При использовании меток имена переменных должны быть уникальны.</p></blockquote></div><p>Я так и не понял, что вы этим хотели сказать<br />Под этим<br /></p><div class="quotebox"><blockquote><p>Для пользователя различия при использовании функций(|процедур) или Меток и GoSub заключается в «области видимости» переменных</p></blockquote></div><p>вы подразумевали это?<br /></p><div class="quotebox"><blockquote><p>функция похожа на подпрограмму (Gosub), отличаясь от нее только способностью принимать параметры (входные данные) от вызывающего оператора. Кроме того, функция при желании может возвращать значения вызывающему оператору.</p></blockquote></div><p>И опять же - что же такое уникальные имена переменных?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-02-18T19:26:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57033#p57033</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57032#p57032" />
			<content type="html"><![CDATA[<p>Тема преисполненная цитатами справки и перефразированием справки.</p><p>Нет, не правильно. Даже не смотря на специфичность термина «действует» <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />GoSub - команда выполняющая переход к метке указанной в виде имени метки в качестве первого параметра команды GoSub.<br />Метку можно поставить в любой строке скрипта.<br />После перехода к данной метке выполнение продолжится от строки с именем метки до первого Return|Exit|ExitApp.<br />С переменными «внутри GoSub» (у GOSUB нет «внутри» с пользовательской точки зрения, это же команда) следует поступать так же, как и в остальном скрипте.</p><p>Я ответил на два ваших вопроса?</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-02-18T19:15:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57032#p57032</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57026#p57026" />
			<content type="html"><![CDATA[<p>Вроде понял&nbsp; - мы вызываем функцию, которая вызывает другую функцию.<br />Спасибо!<br />Подниму свои вопросы, чтобы не затерялись.<br />Правильно ли я понял, что переменная используемая внутри Gosub действует только на Gosub?<br />Уникальные переменные это значит, что их названия не должны повторяться в других Gosub и вообще нигде больше в скрипте?<br />Если да, то почему?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-02-18T18:52:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57026#p57026</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57021#p57021" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>DD пишет:</cite><blockquote><p>А получится представить таким же образом сразу несколько строк:..</p></blockquote></div><p>Нет, можно всё поместить на пример в функцию:</p><div class="codebox"><pre><code>Capture:=&quot;test&quot;
Space::Test()

WinOnTop:
   SoundBeep
   Return

RunRunRun:
   TrayTip,, % WinTtlCls
   Sleep, 750
   TrayTip
   Return

Test()
{
   global
   SetTimer, WinOnTop, -1000
   WinTtlCls:=Capture
   Gosub, RunRunRun
}</code></pre></div><p>Ну максимум можно так:</p><div class="codebox"><pre><code>SetTimer, WinOnTop, 100, WinTtlCls=Capture
Gosub, RunRunRun</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Grey]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25792</uri>
			</author>
			<updated>2012-02-18T17:22:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57021#p57021</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57018#p57018" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
text:=&quot;{tab 2}{right 4}{PgDn}&quot;
Send, % text</code></pre></div><p>А получится представить таким же образом сразу несколько строк:</p><div class="codebox"><pre><code>
SetTimer, WinOnTop, 100
WinTtlCls = Capture
Gosub, RunRunRun</code></pre></div>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2012-02-18T16:40:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57018#p57018</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57017#p57017" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Grey, у меня вот этот код в скрипте появляется 20 раз...</p></blockquote></div><p>У Вас уже есть всё под рукой, мало одной функции?, сделайте две, три..., лишбы как говорится - работало.</p><div class="codebox"><pre><code>x1:=y1:=0, x2:=(y2:=1200)-200
Path:=&quot;c:\boomtime\&quot;, Tint:=&quot;&quot;

...
Loop
{
   If (v1&gt;Sr)
   {
      SoundPlay, % Path &quot;finish.mp3&quot;, 1
      Return
   }
   Else
      MouseMove, h1, v1
   If (A_Cursor!=&quot;Unknown&quot;)
      v1:=v1+50
   Else
      Break
}
MouseClick,, h1, v1,, 0
Sleep, 500
SameFuncName()
...

SameFuncName()
{
   global
   Loop
      If !SameFuncName2(x, y, x1, y1, x2, y2, &quot;&quot;, Path &quot;loaded.png&quot;)
         Break
   If !SameFuncName2(x, y, x1, y1, x2, y2, &quot;&quot;, Path &quot;error.png&quot;)
   {
      SoundPlay, % Path &quot;finish.mp3&quot;, 1
      Return
   }
   If !SameFuncName2(x, y, x1, y1, x2, y2, &quot;&quot;, Path &quot;ocenena.png&quot;)
      Send, !{F4}
   If !SameFuncName2(x, y, x1, y1, x2, y2, &quot;&quot;, Path &quot;ocenka.png&quot;)
   {
      Send, % ocenka
      Sleep, 500
      MouseClick,, x, y,, 0
      Sleep, 1000
      If !SameFuncName2(x, y, x1, y1, x2, y2, &quot;&quot;, Path &quot;zakaz.png&quot;)
      {
         Sleep, 500
         Send, % pokupka
         MouseClick,, x, y,, 0
         Sleep, 500
         Send, !{F4}
      }
      Else
         Send, !{F4}
   }
   Sleep, 500
}

SameFuncName2(ByRef OutX, ByRef OutY, X1, Y1, X2, Y2, Variation, FilePath)
{
   ImageSearch, OutX, OutY, X1, Y1, X2, Y2, % Variation . FilePath
   Return, ErrorLevel
}</code></pre></div><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>...зачем тогда нужны функции, если есть такая замечательная вещь, как Gosub?</p></blockquote></div><p>Собственно на это уже было разъяснение:</p><div class="quotebox"><cite>Grey пишет:</cite><blockquote><p>...можно вызвать в параметрах любой команды, она может вызвать саму себя, возвратить результат/ы.</p></blockquote></div><p>Можно почитать ещё <a href="http://www.script-coding.com/AutoHotkey/Functions.html">тут</a>, если хотите найти доскональный ответ.</p>]]></content>
			<author>
				<name><![CDATA[Grey]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25792</uri>
			</author>
			<updated>2012-02-18T16:34:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57017#p57017</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57016#p57016" />
			<content type="html"><![CDATA[<p>У меня такое чувство, что официальная справка создана для программистов, а не для рядовых пользователей.<br />Правильно ли я понял, что переменная используемая внутри Gosub действует только на Gosub?<br />Уникальные переменные это значит, что их названия не должны повторяться в других Gosub и вообще нигде больше в скрипте?<br />Если да, то почему?<br />И вы так и не ответили для чего нужны функции если есть Gosub?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-02-18T16:34:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57016#p57016</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57014#p57014" />
			<content type="html"><![CDATA[<p><a href="http://l.autohotkey.net/docs/Functions.htm#Locals">Переменные в контексте функции</a><br />Сперва прочитайте <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Переменные используемые в функциях «локальные» по умолчанию, в subroutines — «глобальные».<br />Заметьте — все ссылки ведут на официальную справку.<br /></p><div class="quotebox"><blockquote><p>но там пока ещё слишком сложно написано для меня.</p></blockquote></div><p>Если не пытаться решить вопрос самостоятельно «слишком сложно» будет почти всегда.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-02-18T16:14:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57014#p57014</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57013#p57013" />
			<content type="html"><![CDATA[<p>Конечно же перед тем, как задать вопрос, я сходил по вашей ссылке, но там пока ещё слишком сложно написано для меня.<br />Сейчас понял.<br />Спасибо!<br /></p><div class="quotebox"><blockquote><p>Для пользователя различия при использовании функций(|процедур) или Меток и GoSub заключается в «области видимости» переменных. При использовании меток имена переменных должны быть уникальны.</p></blockquote></div><p>А что такое «области видимости»?<br />И что значит уникальны?<br />И зачем тогда нужны функции, если есть такая замечательная вещь, как Gosub?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-02-18T16:01:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57013#p57013</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57012#p57012" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>А вот тут можно поподробней?<br />Куда GoSub возвращается&nbsp; после завершения, если обращение к ней у меня будет 20 раз?<br />Будет возвращаться в тот момент откуда обратились?</p></blockquote></div><p>Я ссылки привожу в расчёте на то, что информацию по ним таки прочитают <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br /></p><div class="quotebox"><blockquote><p>Jumps to the specified label and continues execution until Return is encountered.</p></blockquote></div><p>Если есть некий Label («Метка» по-русски) начинающийся Label-name и заканчивающийся Return, то при обращении к этому Label с помощью GoSub вы&amp;#769;полнятся операции от Label-name до Return и выполнение скрипта продолжится от GuSub далее по коду (подробнее незнаю как расписать)<br />Абстрактный пример:<br /></p><div class="quotebox"><blockquote><p>начало скрипта<br />1-е действие<br />2-е действие<br />3-е действие<br />4-е действие<br />конец выполнения<br />Return или ExitApp или Ничего</p></blockquote></div><div class="quotebox"><blockquote><p>начало скрипта<br />1-е действие<br />Gosub НекаяМетка<br />4-е действие<br />конец выполнения<br />Return или ExitApp</p><p>НекаяМетка:<br />2-е действие<br />3-е действие<br />Return</p></blockquote></div><p>Оба примера одинаковы по сути.<br />Для пользователя различия при использовании функций(|процедур) или Меток и GoSub заключается в «области видимости» переменных. При использовании меток имена переменных должны быть уникальны.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-02-18T15:52:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57012#p57012</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57008#p57008" />
			<content type="html"><![CDATA[<p>А вот тут можно поподробней?<br />Куда GoSub возвращается&nbsp; после завершения, если обращение к ней у меня будет 20 раз?<br />Будет возвращаться в тот момент откуда обратились?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-02-18T14:28:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57008#p57008</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57006#p57006" />
			<content type="html"><![CDATA[<p>Ну раз не получается у вас собрать некую «функцию» используйте простой путь — <a href="http://l.autohotkey.net/docs/commands/Gosub.htm">Gosub</a>.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-02-18T14:16:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57006#p57006</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57003#p57003" />
			<content type="html"><![CDATA[<p>Grey, у меня вот этот код в скрипте появляется 20 раз<br /></p><div class="codebox"><pre><code>loop
   {
      ImageSearch, x6, y6, 0, 0, 1000, 1200, C:\boomtime\loaded.png   
      If ErrorLevel = 0
      {
         break
      }
   }
   ImageSearch, x5, y5, 0, 0, 1000, 1200, C:\boomtime\error.png
   If ErrorLevel = 0
   {
      SoundPlay, C:\boomtime\finish.mp3
      Return
   }
   ImageSearch, x4, y4, 0, 0, 1000, 1200, C:\boomtime\ocenena.png
   If ErrorLevel = 0
   {
      send !{f4} 
   }
   ImageSearch, x2, y2, 0, 0, 1000, 1200, C:\boomtime\ocenka.png
   If ErrorLevel = 0
   {
      send %ocenka%
      sleep, 500
      click %x2%, %y2%
      sleep, 1000
      ImageSearch, x3, y3, 0, 0, 1000, 1200, C:\boomtime\zakaz.png
      If ErrorLevel = 0 
      {
         sleep, 500
         send %pokupka%
         click %x3%, %y3%
         sleep, 500  
         send !{f4}
      } 
      Else  
      {
         send !{f4}
      }     
   }
   sleep, 500</code></pre></div><p>Поэтому я и думал из всего него сделать функцию<br />Чтобы в нужных местах вызывать её, а не повторять эту простыню 20 раз.<br />Так как, если в нём что-то изменять, добавить sleep например, то легче сделать это один раз в функции, чем 20 раз в коде.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-02-18T12:43:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57003#p57003</id>
		</entry>
</feed>
