1 (изменено: John_Science, 2016-07-28 14:18:03)

Тема: Проблема с выводом номера читаемой из файла строки.

Я делал внутриигровой редактор текста, чтобы не требовалось уходить в АФК для программирования. Захотел добавить вещь, чтобы показывало количество строчек. Простейшая программа, но вдруг появился странный баг. Вместо нормального вывода получалось нечто подобное:

1
7
7
7
7

Исходный код скрипта для теста:

#include SAMP.ahk


F2::
i := 0
Loop, read, input.txt
{
	i := i + 1
	addChatMessage("FF0000", i)
}
return

Ссылка на SAMP.ahk : http://rgho.st/8fZYfdXqB

Сначала я грешил на свой код, потом решил попробовать с другой переменной-счетчиком (банально дал другое имя). Сработало. Потом начал грешить на код SAMP.ahk. Искал переменную i, объявленную глобально, не нашел. Решил попробовать другим образом:

#include SAMP.ahk


F2::
	f()
return

f()
{
	i := 0
	Loop, read, newadm.txt
	{
		i := i + 1
		addChatMessage("FF0000", i)
	}
	return
}

Снова заработало. Я не понимаю, почему так происходит. Вроде тривиальная программа, однако мне, человеку с интеллектом ёжика, стоило больших трудов ее отладить. Прошу объяснить, почему так произошло.

2

Re: Проблема с выводом номера читаемой из файла строки.

John_Science пишет:

Я не понимаю, почему так происходит

Ответ на поверхности — видимо, переменная с этим именем уже используется SAMP.ahk.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: Проблема с выводом номера читаемой из файла строки.

teadrinker
Проблема в том, что почему с функцией тогда работает? Там не указано, что переменная объявлена локально, следовательно должны бы были остаться те же проблемы. Если я что-то не так понимаю, прошу простить.

4

Re: Проблема с выводом номера читаемой из файла строки.

Если в функции ничего не указано — все переменные внутри локальны.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: Проблема с выводом номера читаемой из файла строки.

John_Science

Для надёжности, особенно со сторонними модулями, переведи в функцию, при повторном объявлении, функции, скрипт будет ругаться.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

6 (изменено: John_Science, 2016-07-30 16:12:05)

Re: Проблема с выводом номера читаемой из файла строки.

teadrinker пишет:

Если в функции ничего не указано — все переменные внутри локальны.

Так дело в том, что если бы переменная i была объявлена глобально в подключаемом модуле, то тогда использовалась бы та самая переменная i.

7

Re: Проблема с выводом номера читаемой из файла строки.

Ну, значит не была объявлена глобально. Вне функций она всё равно доступна.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder