1 (изменено: belyankin12, 2019-01-12 16:59:54)

Тема: AHK: Глобальная видимость переменных создаваемых Gui и IniRead

Здравствуйте. Возникла проблема, когда функции не имеют доступа к переменным, которые были созданы в GUI или в результате чтения INI файла через IniRead. Все переменные изначально не были задекларированы, т.е. они создаются непосредственно во время работы скрипта, что не делает их глобальными. Если же перед командой IniRead к примеру объявить нужную мне переменную глобальной, а потом уже читать в эту переменную значение, то все работает, однако мне хотелось бы избежать такого подхода. Есть ли способ все объявляемые командой IniRead и GUI (или хотя бы GUI) переменные делать глобальными? Передавать в функцию нужную мне переменную тоже не представляется возможным.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

2

Re: AHK: Глобальная видимость переменных создаваемых Gui и IniRead

belyankin12 пишет:

Есть ли способ все объявляемые командой IniRead и GUI (или хотя бы GUI) переменные делать глобальными?

Да, заранее объявить суперглобальными, либо объявить глобальными в функции. Но лучше вообще обходиться без глобальных переменных.

belyankin12 пишет:

Передавать в функцию нужную мне переменную тоже не представляется возможным.

Не представляю такой ситуации, всегда можно либо передать переменную функциии, либо забиндить к BoundFunc-объекту.

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

3 (изменено: belyankin12, 2019-01-13 10:55:36)

Re: AHK: Глобальная видимость переменных создаваемых Gui и IniRead

Странно, пробовал объявлять глобальными внутри функций не работало, но сейчас получилось, спасибо.
P.S. Дело в том, что функцию вызываю не я. Мой скрипт вызывает одну из функций, имена которых находятся в массиве, а ключ от которого вводит пользователь (т.е. я не знаю какая функция будет вызвана). Более того в функцию передаются параметры в виде массива посредством param* (где каждое слово из всех введенных пользователем параметров является отдельным значением), ибо для каждой функции есть определенное количество необходимых параметров (некоторые из одного слова состоят, некоторые из строчек или вперемешку). Потому будет затруднительно нагружать все это дело проверкой на имя функции и передачей переменных (в завершение все вышеописанное заключено в тело класса, я в них не особо разбираюсь, но по-моему там область видимости переменных похожа с функциями).

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.