1 (изменено: Indomito, 2012-04-09 20:54:03)

Тема: AHK: Принудительная инициализация переменных с присвоением

Есть скрипт

;*********************************************
;***************BEGIN SCRIPT******************
;*********************************************
;-----Инициализация
; Запрет повторного запуска 
#SingleInstance
; Скрипт не выгружается
#Persistent
 
;=====Базовые пути=====================
#Include c:\AHK\Include\
#Include PathUses.ahk
; Устанавливаем путь к файлам скрипта
#Include C:\AHK\AllSystemOS\

;=====Cменить иконку скрипта===========
mcTray := PathAhkIcon "Os_Settings_Gear.ico"
Menu, Tray, Icon, %McTray%,, 1

;===========================================
;+++++Секция общих переменных скрипта+++++++
;--Пути к McAfee
mcPath := ProgSysPath32 "McAfee\"
mcVSE  := mcPath "VirusScan Enterprise\"
mcCFW  := mcPath "Common Framework\"
;++++++++++++++++++++++++++++++++++++++++++++
;===========================================

;=====Справка по клавишам
#Include HelpKey.ahk

;================Игры================== 
#Include games.ahk

;=====Быстрый запуск основных приложений
#Include WinFunc.ahk

;=====McAfee===========================
#Include McAfee.ahk

;=====Запуск утилит====================
#Include util.ahk

;=====Блокируем отдельное нажатие клавиши WIN
~LWin Up::
~RWin Up::
return

;=====Замена CapsLock на Shift
CapsLock::Shift
return

;*********************************************
;****************END SCRIPT*******************
;*********************************************

Проблема в том что фрагмент его

;===========================================
;+++++Секция общих переменных скрипта+++++++
;--Пути к McAfee
mcPath := ProgSysPath32 "McAfee\"
mcVSE  := mcPath "VirusScan Enterprise\"
mcCFW  := mcPath "Common Framework\"
;++++++++++++++++++++++++++++++++++++++++++++
;===========================================

должен находиться в начале McAfee.ahk, но если его разместить в начале, то переменным не присвояться нужные значения, т.к. он находится в середине области выполнения.

Как это обойти не вызывая функцию и не используя подпрограмму.

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

2

Re: AHK: Принудительная инициализация переменных с присвоением

Задачка на сообразительность?
Из разряда: «Свяжите руки за спиной, а теперь попробуйте завязать шнурки».

Если участок кода, в котором производится присвоение переменным значений, лежит вне выполняемых подпрограмм скрипта, то кроме как «каким-либо образом включив участок в какую-либо подпрограмму» присвоение не произвести.

Если вы ставите условие «без вызова функции и без перехода  по метке подпрограммы» —
выносите все необходимые присвоения в секцию автовыполнения.

3

Re: AHK: Принудительная инициализация переменных с присвоением

Ответ - ни как, я верно понял?

P.S. Я думал по аналогу include она то подключается до выполнения скрипта.

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

4 (изменено: creature.ws, 2012-04-09 21:50:56)

Re: AHK: Принудительная инициализация переменных с присвоением

Можно собрать «то что должно выполниться при старте» в отдельный файл и добавить его посредством #include первым.
И назвать операцию

;=====Базовые переменные=====================

5

Re: AHK: Принудительная инициализация переменных с присвоением

Ну, да, т.е. я так и поступил, точнее сделаю, просто думал что можно поступить проще.

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

6

Re: AHK: Принудительная инициализация переменных с присвоением

Проще — оформлять участки кода в виде процедур|функций|классов и «объявлять константы» при помощи static varname

7

Re: AHK: Принудительная инициализация переменных с присвоением

Проблема решена.

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