<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6832</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6832&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Как заменить переменной повторяющуюся часть скрипта.».]]></description>
		<lastBuildDate>Sat, 18 Feb 2012 19:50:09 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57036#p57036</link>
			<description><![CDATA[<p>Ну и на том спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Feb 2012 19:50:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57036#p57036</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57035#p57035</link>
			<description><![CDATA[<p>Если вы «всё поняли» про действие Gosub, то мне нечего добавить к сказанному. Повторяться в четвёртый раз не буду, увольте <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sat, 18 Feb 2012 19:43:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57035#p57035</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57033#p57033</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Feb 2012 19:26:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57033#p57033</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57032#p57032</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sat, 18 Feb 2012 19:15:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57032#p57032</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57026#p57026</link>
			<description><![CDATA[<p>Вроде понял&nbsp; - мы вызываем функцию, которая вызывает другую функцию.<br />Спасибо!<br />Подниму свои вопросы, чтобы не затерялись.<br />Правильно ли я понял, что переменная используемая внутри Gosub действует только на Gosub?<br />Уникальные переменные это значит, что их названия не должны повторяться в других Gosub и вообще нигде больше в скрипте?<br />Если да, то почему?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Feb 2012 18:52:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57026#p57026</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57021#p57021</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Grey)]]></author>
			<pubDate>Sat, 18 Feb 2012 17:22:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57021#p57021</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57018#p57018</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (DD)]]></author>
			<pubDate>Sat, 18 Feb 2012 16:40:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57018#p57018</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57017#p57017</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Grey)]]></author>
			<pubDate>Sat, 18 Feb 2012 16:34:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57017#p57017</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57016#p57016</link>
			<description><![CDATA[<p>У меня такое чувство, что официальная справка создана для программистов, а не для рядовых пользователей.<br />Правильно ли я понял, что переменная используемая внутри Gosub действует только на Gosub?<br />Уникальные переменные это значит, что их названия не должны повторяться в других Gosub и вообще нигде больше в скрипте?<br />Если да, то почему?<br />И вы так и не ответили для чего нужны функции если есть Gosub?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Feb 2012 16:34:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57016#p57016</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57014#p57014</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sat, 18 Feb 2012 16:14:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57014#p57014</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57013#p57013</link>
			<description><![CDATA[<p>Конечно же перед тем, как задать вопрос, я сходил по вашей ссылке, но там пока ещё слишком сложно написано для меня.<br />Сейчас понял.<br />Спасибо!<br /></p><div class="quotebox"><blockquote><p>Для пользователя различия при использовании функций(|процедур) или Меток и GoSub заключается в «области видимости» переменных. При использовании меток имена переменных должны быть уникальны.</p></blockquote></div><p>А что такое «области видимости»?<br />И что значит уникальны?<br />И зачем тогда нужны функции, если есть такая замечательная вещь, как Gosub?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Feb 2012 16:01:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57013#p57013</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57012#p57012</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sat, 18 Feb 2012 15:52:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57012#p57012</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57008#p57008</link>
			<description><![CDATA[<p>А вот тут можно поподробней?<br />Куда GoSub возвращается&nbsp; после завершения, если обращение к ней у меня будет 20 раз?<br />Будет возвращаться в тот момент откуда обратились?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Feb 2012 14:28:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57008#p57008</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57006#p57006</link>
			<description><![CDATA[<p>Ну раз не получается у вас собрать некую «функцию» используйте простой путь — <a href="http://l.autohotkey.net/docs/commands/Gosub.htm">Gosub</a>.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sat, 18 Feb 2012 14:16:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57006#p57006</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как заменить переменной повторяющуюся часть скрипта.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57003#p57003</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Feb 2012 12:43:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57003#p57003</guid>
		</item>
	</channel>
</rss>
