1

Тема: AHK: Объявление, присваивание и сравнение переменных

Столкнулся с очень странным по моему мнению поведением скрипта, в связи с чем возникло множество вопросов:

x := 6 
vk43:: 
	if (x = 6) 
		Send, 6
return

Выражение в скобках не равно true. Сперва я решил, что x имеет тип float и дело в этом, но прочитав документацию, убедился, что x должен быть int. Попробовал вывести в MsgBox значение x и понял, что внутри кода клавиши переменную x вообще не видно. (хотя был полностью уверен что такое объявление делает x глобальной переменной). Прочитал в документации про области видимости и попробовал приписывать ключевое слово global в разных местах, погуглил на эту тему, и всё равно ничего не получилось. Больше идей где искать решение проблемы нет.
А хочу я сделать всего лишь следующее:

global i := 0 
vk43:: 
	if (i = 0) 
		Send, 6
	else if (i = 1)
		Send, 7
	else if (i = 2)
		Send, 8
	i:= i + 1
	if (i = 2)
		i:= 0
return

То есть чтобы по нажатию одной клавиши по кругу последовательно выводились N символов.

2

Re: AHK: Объявление, присваивание и сравнение переменных

direhorn пишет:

Выражение в скобках не равно true

?

x := 6 
f11::
if (x = 6) 
   msgbox % x
return

3

Re: AHK: Объявление, присваивание и сравнение переменных

Спасибо, ваше сообщение мне помогло:) По своей глупости я не создавал новый файл и экспериментировал в основном скрипте, где в самом верху было такое:

^F12:: 
	Suspend, Toggle
return

До объявления x. Убрал это вниз и всё заработало. То есть глобальные переменные только в самом верху можно объявлять?

4

Re: AHK: Объявление, присваивание и сравнение переменных

http://www.script-coding.com/AutoHotkey/Scripts.html