<?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=15999</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15999&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK : Регулярные выражения».]]></description>
		<lastBuildDate>Tue, 19 Jan 2021 16:42:03 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145064#p145064</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Тут надо всё переписывать</p></blockquote></div><p>Этот ответ меня впринципе удовлетворит, Вы дали понять, что ошибка была допущена в самом начале, буду искать.<br /></p><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>а вы далеко отошли от темы.</p></blockquote></div><p>Согласен, я столкнулся с трудностями использования регулярных выражений и я получил на это ответ.</p><p>Спасибо всем, кто откликнулся, за помощь.</p>]]></description>
			<author><![CDATA[null@example.com (v413ry4nk4)]]></author>
			<pubDate>Tue, 19 Jan 2021 16:42:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145064#p145064</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145063#p145063</link>
			<description><![CDATA[<p>Тут надо всё переписывать, а вы далеко отошли от темы.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 19 Jan 2021 16:38:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145063#p145063</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145062#p145062</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>(зачем тогда там цикл)</p></blockquote></div><p>Мне нужно после нажатия определенного хоткея, который вызывает функцию AutoScreen() ждать до момента обнаружения {1e90ff}Вы вылечили ,<br />а кроме использования цикла для непрерывной проверки мне ничего больше в голову не пришло.</p>]]></description>
			<author><![CDATA[null@example.com (v413ry4nk4)]]></author>
			<pubDate>Tue, 19 Jan 2021 16:37:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145062#p145062</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145060#p145060</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, сейчас постараюсь объяснить.<br />У меня имеется функция GetNewLine()<br /></p><div class="codebox"><pre><code>GetNewLine(filename) {
    static old
    static new

    if !old {
        FileGetSize, old, %filename%
        new := old
    }

    while old = new {
        sleep 100 ;задержка
        FileGetSize, new, %filename%
    }

    old := new
    Loop, read, %filename%
    if A_LoopReadLine {
            last := A_LoopReadLine
    }
    return last
}</code></pre></div><p>Писал я её не сам, брал готовую. Каждые 100мс сравнивается размер файла chatlog.txt, и если в нём обнаружены изменения - то последняя строка присваивается переменной.<br />Далее в функции AutoScreen()<br /></p><div class="codebox"><pre><code>AutoScreen() {
    ChatLog = C:\Users\%A_UserName%\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
    
    Loop,
    { 
        var := GetNewLine(ChatLog)
        If InStr(var, &quot;{1e90ff}Вы вылечили &quot;)
            {
                SendChat(&quot;/время&quot;)
                Sleep 100
                SendInput, {F8}
            }
        Break
    }
}</code></pre></div><p>Эта строка проверяется на наличие {1e90ff}Вы вылечили , и если это так - то выполняется <br /></p><div class="codebox"><pre><code>{
	SendChat(&quot;/время&quot;)
	Sleep 100
	SendInput, {F8}
}</code></pre></div><p>Возможно я изначально действовал неправильно, и можно как-то объединить GetNewLine() и AutoScreen() в одну функцию?</p>]]></description>
			<author><![CDATA[null@example.com (v413ry4nk4)]]></author>
			<pubDate>Tue, 19 Jan 2021 16:33:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145060#p145060</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145059#p145059</link>
			<description><![CDATA[<p>Я думал цикл перебирает по одной строке, если не так (зачем тогда там цикл), то это надо весь код смотреть.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 19 Jan 2021 16:24:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145059#p145059</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145058#p145058</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>На последней строке ChatLog.</p></blockquote></div><p>ChatLog ведь за пределами цикла, он в самом начале функции, или я что-то совсем не понимаю?<br /></p><div class="codebox"><pre><code>AutoScreen() {
    ChatLog = C:\Users\%A_UserName%\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
    Loop, {
    var := GetNewLine(ChatLog)
    
    If InStr(var, &quot;{1e90ff}Вы вылечили &quot;)
        {
            SendChat(&quot;/время&quot;)
            Sleep 100
            SendInput, {F8}
        }
    Break
    }
}</code></pre></div><p>Break у меня перед закрывающей } в цикле, это должно быть как-то иначе?</p>]]></description>
			<author><![CDATA[null@example.com (v413ry4nk4)]]></author>
			<pubDate>Tue, 19 Jan 2021 16:12:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145058#p145058</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145056#p145056</link>
			<description><![CDATA[<p>На последней строке ChatLog.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 19 Jan 2021 15:58:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145056#p145056</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145054#p145054</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Его надо вызвать на последней строке</p></blockquote></div><p>Но я же его и вызываю на последней строке цикла, разве не так?</p>]]></description>
			<author><![CDATA[null@example.com (v413ry4nk4)]]></author>
			<pubDate>Tue, 19 Jan 2021 15:54:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145054#p145054</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145053#p145053</link>
			<description><![CDATA[<div class="quotebox"><cite>v413ry4nk4 пишет:</cite><blockquote><p>только один раз</p></blockquote></div><p>А как ещё, если Break сразу применять. <br />Его надо вызвать на последней строке, или когда вам там надо.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 19 Jan 2021 15:50:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145053#p145053</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145051#p145051</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong><br /></p><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Что нибудь с кодировкой файла.</p></blockquote></div><p>Да, после сохранения в UTF8+BOM <br /></p><div class="codebox"><pre><code>If InStr(var, &quot;{1e90ff}Вы вылечили &quot;)</code></pre></div><p>заработал.<br />По поводу завершения цикла, я попробовал завершить его командой Break, <br /></p><div class="codebox"><pre><code>AutoScreen() {
    ChatLog = C:\Users\%A_UserName%\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
    Loop, {
    var := GetNewLine(ChatLog)
    
    If InStr(var, &quot;{1e90ff}Вы вылечили &quot;)
        {
            SendChat(&quot;/время&quot;)
            Sleep 100
            SendInput, {F8}
        }
    Break
    }
}</code></pre></div><p>Но по итогу функция выполняется только один раз, хотя хоткей уже не блокируется. Т.е. хоткей выполняется повторно, но функция&nbsp; AutoScreen уже не срабатывает,&nbsp; не посылает нажатие F8. В чём может быть проблема?<br />P.S: добавление Return перед последней&nbsp; } ситуации не меняет.</p>]]></description>
			<author><![CDATA[null@example.com (v413ry4nk4)]]></author>
			<pubDate>Tue, 19 Jan 2021 15:48:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145051#p145051</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145041#p145041</link>
			<description><![CDATA[<div class="quotebox"><cite>v413ry4nk4 пишет:</cite><blockquote><p>ни в какую не хочет работать</p></blockquote></div><p>Что нибудь с кодировкой файла.<br /></p><div class="quotebox"><cite>v413ry4nk4 пишет:</cite><blockquote><p>с помощью функции, но она выполняется единожды</p></blockquote></div><p>У вас Loop не завершается.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 19 Jan 2021 14:37:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145041#p145041</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145039#p145039</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, сейчас проверил 2 ваших варианта. На удивление, вариант с <br /></p><div class="codebox"><pre><code>If InStr(var, &quot;{1e90ff}Вы вылечили &quot;)</code></pre></div><p>ни в какую не хочет работать, а вот с использованием <br /></p><div class="codebox"><pre><code>If RegExMatch(var, &quot;(*UCP)\{[a-f0-9]{6}\}\s*([\w\s]+?)\s*\{&quot;, m)
&amp;&amp; m1 ~= &quot;i)^Вы вылечили$&quot;</code></pre></div><p>частично заработал. Сейчас объясню, почему частично.<br />У меня имеются строки такого вида:<br /></p><div class="codebox"><pre><code>$Numpad4::
	IniRead, num4_1, actions.ini, Адреналин, num4_1
	Sleep 100
	{
		SendChat(num4_1)
	}
	Sleep 100
	{
		AutoHeal_25()
	}
	Sleep 500
	{
		AutoScreen()
	}
	Return</code></pre></div><p>где<br /></p><div class="codebox"><pre><code>AutoScreen() {
	ChatLog = C:\Users\%A_UserName%\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
	Loop, {
	var := GetNewLine(ChatLog)
	
	If RegExMatch(var, &quot;(*UCP)\{[a-f0-9]{6}\}\s*([\w\s]+?)\s*\{&quot;, m)
	&amp;&amp; m1 ~= &quot;i)^Вы вылечили$&quot;
		{
    		SendChat(&quot;/время&quot;)
    		Sleep 100
    		SendInput, {F8}
		}
	}
	Return
}</code></pre></div><p>Я решил реализовать это с помощью функции, но она выполняется единожды. При повторном вызове Numpad4 скрипт не реагирует, как будто клавиша и не назначена хоткеем. Таких хоткеев у меня 52, и в каждом должна выполнятся эта функция. На всех она срабатывает единожды. Как можно это решить? Мне нужно, чтобы после выполнения кода на Numpad4 либо любой-другой хоткей он оставался рабочим и я мог повторно вызвать этот код. Зараннее спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (v413ry4nk4)]]></author>
			<pubDate>Tue, 19 Jan 2021 13:46:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145039#p145039</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145036#p145036</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong> Понял.</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Tue, 19 Jan 2021 11:54:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145036#p145036</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145035#p145035</link>
			<description><![CDATA[<div class="quotebox"><cite>Botsy пишет:</cite><blockquote><p>Используется для повышения производительности</p></blockquote></div><p>Я имел ввиду производительность падает в сравнении с поиском ANSI, то есть без (*UCP).<br /></p><div class="quotebox"><cite>Botsy пишет:</cite><blockquote><p>выглядит противоречиво: сначала мы ищем согласно общему шаблону, а потом на 100% совпадение</p></blockquote></div><p>По ТЗ нужен только InStr, пример с RegEx, это про то когда есть несколько вариантов строки, сначала один раз определяем что в ней, а далее просто сравниваем со своими вариантами.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 19 Jan 2021 11:49:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145035#p145035</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK : Регулярные выражения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145034#p145034</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong> Про UCP прочитал в справке:</p><p><em>(*UCP) Используется для повышения производительности \ d, \ D, \ s, \ S, \ w, \ W, \ b и \ B по умолчанию распознают только символы ASCII, даже в кодировке Unicode. Если шаблон начинается с (* UCP), свойства Unicode будут использоваться для определения совпадающих символов. Например, \ w становится эквивалентным [\ p {L} \ p {N} _], а \ d становится эквивалентным \ p {Nd}.</em><br />Не знаю что за шаблон [\ p {L} \ p {N} _], но подумал про ускорение работы из-за замены совпадений. </p><div class="quotebox"><blockquote><p>Нет, это после RegExMatch проверяет найденное на полное соответствие указанной строке в любом регистре.</p></blockquote></div><p>Мы в переменной ищем совпадение согласно заданному рег. шаблону и если мы такое нашли, зачем нам проверять это на полное соответствие? Просто выглядит противоречиво: сначала мы ищем согласно общему шаблону, а потом на 100% совпадение. Не легче ли изначально тогда искать по шаблону {динамический цвет} + вы вылечили ? <br />Ну а если поиск всегда статический, то получается надо использовать ваш второй вариант с InStr.</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Tue, 19 Jan 2021 11:40:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145034#p145034</guid>
		</item>
	</channel>
</rss>
