<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Проблема с if]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13547&amp;type=atom" />
	<updated>2018-03-16T14:18:13Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13547</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124099#p124099" />
			<content type="html"><![CDATA[<p><a href="https://autohotkey.com/docs/commands/IfEqual.htm">IfEqual</a>.<br />Вы неправильно делаете запись. Первой передаётся имя переменной, без процентов, второй передаётся строка, число, или ссылка на переменную в виде %var%. Я кстати тоже следую этому заблуждению. Прошу прощения.</p><p>Лучше всё-таки пользоваться просто &quot;if&quot;, он работает как с переменными, так и с любыми типами, автоматически приводятся к строке и сравнивая по алфавиту.</p><p><strong>UPD</strong><br />И не прячьте пожалуйста свой код под спойлер. Вы ничего секретного не выдаёте и это не удобно для восприятия.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-03-16T14:18:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124099#p124099</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124098#p124098" />
			<content type="html"><![CDATA[<p>Похоже проблема у меня. Оба кода выдают неравенство.<br />Буду искать, в любом случае спасибо.</p>]]></content>
			<author>
				<name><![CDATA[asdfzxcv]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39125</uri>
			</author>
			<updated>2018-03-16T14:04:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124098#p124098</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124097#p124097" />
			<content type="html"><![CDATA[<p>Тогда храните время изменения файла в сценарии, который оперирует этой функцией и просто читайте в цикле время изменения, выходя из него всякий раз, когда оно изменяется:</p><div class="codebox"><pre><code>
FileGetTime, fileTime, 123.ini
Loop {
	Loop {
		FileGetTime, changeTime, 123.ini
		if (fileTime != changeTime) {
			fileTime := changeTime
			break
		}
		Sleep, 250
	}
	; INI-файл изменился. Выполнить инструкции и вернуться к ожиданию изменений
}
</code></pre></div><p>И вместо устаревших &quot;IfEqual&quot;, используйте просто &quot;if&quot;:<br /></p><div class="codebox"><pre><code>
var1 := 123
var2 := &quot;123&quot;

ifEqual, %var1%, %var2%
	MsgBox,% var1 &quot; эквивалентна &quot; var2
else
	MsgBox,% var1 &quot; не эквивалентна &quot; var2
	
if (var1 == var2)
	MsgBox,% var1 &quot; эквивалентна &quot; var2
else
	MsgBox,% var1 &quot; не эквивалентна &quot; var2
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-03-16T13:59:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124097#p124097</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124095#p124095" />
			<content type="html"><![CDATA[<p>В моем случае ключей около 100 и проще проверить дату изменения файла.<br />Возможно есть способ проверить тип переменной? Все таки все работает если условия поменять местами.</p><p>UPD: Сделал обе переменные числами - все по прежнему:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
change := mainChangeTime*1
ini := mainIniTime*1

if %ini%&lt;&gt;%change%
{
MsgBox, &quot;%change%&quot;  not equal   &quot;%ini%&quot;
}

if %ini%=%change%
{
MsgBox, &quot;%change%&quot;   equal   &quot;%ini%&quot;
}
</code></pre></div></div></div><p>Даже если напрямую задать им одинаковые значения возвращается false xD Видимо я и правда не понимаю чего-то.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
change := 2
ini := 2

ifNotEqual, %ini%, %change%
{
MsgBox, &quot;%change%&quot;  not equal   &quot;%ini%&quot;
}

ifEqual, %ini%, %change%
{
MsgBox, &quot;%change%&quot;   equal   &quot;%ini%&quot;
}
</code></pre></div></div></div>]]></content>
			<author>
				<name><![CDATA[asdfzxcv]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39125</uri>
			</author>
			<updated>2018-03-16T13:44:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124095#p124095</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124094#p124094" />
			<content type="html"><![CDATA[<p>Для этого достаточно читать содержимое этих ключей и если они изменились, совершать действия.</p><p>По поводу &quot;IfEqual&quot;, возможно, что &quot;FileGetTime&quot; и &quot;IniRead&quot;, возвращают разный тип, например, числовой и строковый, тогда это будут разные значения.</p><p><strong>UPD</strong><br />Если вопрос в том, чтобы читать INI только в том случае, если в него была произведена запись, то <a href="http://forum.script-coding.com/viewtopic.php?id=12581">в этой теме</a> рассматриваются способы наблюдения за изменениями в папке, к событиям которых можно прицепить код. Довольно гибкое решение.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-03-16T13:28:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124094#p124094</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124093#p124093" />
			<content type="html"><![CDATA[<p>Что бы изменения в программу вносились автоматически при изменения ключей в ini файле.</p>]]></content>
			<author>
				<name><![CDATA[asdfzxcv]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39125</uri>
			</author>
			<updated>2018-03-16T13:21:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124093#p124093</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124092#p124092" />
			<content type="html"><![CDATA[<p>Верно, но для чего?</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-03-16T13:16:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124092#p124092</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124091#p124091" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>KusochekDobra пишет:</cite><blockquote><p>К тому же, если INI-файл был изменён из другого места и условие для &quot;ifNotEqual&quot; возвращает TRUE, то происходит запись об этом в INI-файл и изменяется его время модификации на предыдущее, что на следующем вызове функции создаст это же состояние условия для &quot;ifNotEqual&quot;.</p><p>Вы уверены, что именно этого пытаетесь добиться?</p></blockquote></div><div class="codebox"><pre><code>
IniWrite, %mainChangeTime%, %file%, Time, changeTime
FileSetTime, %mainChangeTime%, %file%
</code></pre></div><p>В первой строке новая дата изменения пишется в файл, соответственно меняя его, вторая строка меняет время изменения файла на то, которое было в него записано. С правильными датами проблем точно нет.</p>]]></content>
			<author>
				<name><![CDATA[asdfzxcv]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39125</uri>
			</author>
			<updated>2018-03-16T13:06:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124091#p124091</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124090#p124090" />
			<content type="html"><![CDATA[<p>Файлом, который Вы проверяете, является INI файл, в который записываются изменения о его изменении...<br />Если Вы его изменяете, то Вам должно быть известно, что изменения произошли с вероятностью, близкой к абсолютной. Если это так, то какой смысл в этой функции? К тому же, если INI-файл был изменён из другого места и условие для &quot;ifNotEqual&quot; возвращает TRUE, то происходит запись об этом в INI-файл и изменяется его время модификации на предыдущее, что на следующем вызове функции создаст это же состояние условия для &quot;ifNotEqual&quot;.</p><p>Вы уверены, что именно этого пытаетесь добиться?</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-03-16T13:01:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124090#p124090</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Проблема с if]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124089#p124089" />
			<content type="html"><![CDATA[<p>Здравствуйте. Функция должна проверять изменялся ли файл и запускать соответствующие скрипты, но почему то иногда срабатывают сразу оба условия, иногда не срабатывает ни одно, иногда выполняется одно вместо другого. Пробовал и через if a=b/a&lt;&gt;b и через ifEqual/ifNotEqual - результат один. в чем может быть проблема?<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
checkTime(file)
{
FileGetTime, mainChangeTime, %file%
IniRead, mainIniTime, %file%, Time, changeTime

ifEqual, %mainChangeTime%, %mainIniTime%
{
RunWait, 1.ahk
}

ifNotEqual, %mainChangeTime%, %mainIniTime%
{
IniWrite, %mainChangeTime%, %file%, Time, changeTime
FileSetTime, %mainChangeTime%, %file%
RunWait, 2.ahk
RunWait, 3.ahk %file%
}
}
</code></pre></div></div></div><p>UPD: Помогли решить проблему с одновременным срабатыванием, оказалось дело было не в этом куске кода. Появилась другая проблема: при сравнении двух одинаковых дат все равно срабатывает NotEqual.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
FileGetTime, mainChangeTime, 123.ini
IniRead, mainIniTime, 123.ini, Time, changeTime

ifNotEqual, %mainChangeTime%, %mainIniTime%
{
IniWrite, %mainChangeTime%, 123.ini, Time, changeTime
FileSetTime, %mainChangeTime%, 123.ini
MsgBox, &quot;%mainChangeTime%&quot;  not equal   &quot;%mainIniTime%&quot;
}

ifEqual, %mainChangeTime%, %mainIniTime%
{
MsgBox, &quot;%mainChangeTime%&quot;   equal   &quot;%mainIniTime%&quot;
}
</code></pre></div><p><a href="https://imgur.com/a/WXVnS">https://imgur.com/a/WXVnS</a></p></div></div><p>UPD2: Поменял Euqal/NotEqual местами и все заработало как надо. Но почему ifEqual возвращает false при равенстве? Или все делается правильно, просто я чего-то не понимаю? Буду благодарен если кто-то объяснит.</p><p>И еще вопрос: возможно ли закрыть разом все запущенные потоки ahk?</p>]]></content>
			<author>
				<name><![CDATA[asdfzxcv]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39125</uri>
			</author>
			<updated>2018-03-16T12:14:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124089#p124089</id>
		</entry>
</feed>
