1 (изменено: Indomito, 2012-03-13 17:09:28)

Тема: AHK: Сложение текстовых переменных/констант без %%

И так есть скрипт.

;-----------------Автоматизация McAfee-------------------

;-------БЛОК 1----------
; Путь к McAfee
mcPath = C:\Program Files (x86)\McAfee\
mcVSE = %mcPath%VirusScan Enterprise\
mcCFW = %mcPath%Common Framework\
;-----------------------

;-------БЛОК 2----------
; Cменить иконку
mcTray = %mcCFW%McTray.exe
Menu, Tray, Icon, %McTray%,, 1
;-----------------------

;-------БЛОК 3----------
;--- Запуск консоли McAfee
LWin & CapsLock::
RWin & CapsLock::
mcConsol = mcconsol.exe
mcKey1 = /NOSPLAS
Run, %mcConsol% %mcKey1%, %mcVSE%
;-----------------------

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

Можно ли как то явно, т.е. читабельно, написать сложение текстовых переменных/строк? Запись вида mcVSE = %mcPath%VirusScan Enterprise\ немного не привычна и меня путает.
Пример mcCFW = mcPath + var1 и mcCFW = mcPath + "test.exe" , а так же надо ли это реализовать как функцию и вызывать внутри действия БЛОКА №2? (для надёжности, при условии что содержимое БЛОКА №1 константное выражение)

Справку читал - ответа не нашёл или же не увидел.

P.S. Надеюсь это один вопрос... ну почти

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

2 (изменено: creature.ws, 2012-03-13 17:11:41)

Re: AHK: Сложение текстовых переменных/констант без %%

Не сложение, а объединение в одну.

mcPath := A_ProgramFiles " (x86)\McAfee\"
mcVSE  := A_ProgramFiles " (x86)\McAfee\VirusScan Enterprise\"
mcCFW  := A_ProgramFiles " (x86)\McAfee\Common Framework\"

wiki Переменные и выражения.

3 (изменено: Indomito, 2012-03-13 17:26:26)

Re: AHK: Сложение текстовых переменных/констант без %%

creature.ws ну по сути любое сложение и есть "Не сложение, а объединение в одну."

Правда я не очень понял разницу в записи.
1. = и := эквивалентны судя по справке.
2. Что вместо операнда использовать пробел?
Для переменных Var0 = Var1[sps]Var2  - так записывать?
Для констант Var0 = Var1[sps]"тест"  - так записывать?

Это я Переменные и выражения прочитал-читал, но там нет ответа на мой вопрос.

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

4 (изменено: creature.ws, 2012-03-13 17:34:37)

Re: AHK: Сложение текстовых переменных/констант без %%

Если это вопрос терминологии, то кроме ссылки на wiki мне добавить нечего.

1. = и := эквивалентны судя по справке.

Результат использования = и := для присвоения — изменение содержимого переменной.
var0 = %var1%ПробелТекстПробел%var2%
var0 := var1 "между кавычек содержится текст" var2

2. Что вместо операнда использовать пробел?

Не понял вопрос

Var0 = %Var1%[sps]%Var2%
Var0 = %Var1%[sps]"тест"

var0 := var1 "[sps]" var2
var0 := var1 "[sps]тест"

5

Re: AHK: Сложение текстовых переменных/констант без %%

var0 := var1 "[sps]" var2 -  "[sps]" замена "+" (без ") - верно?
var0 := var1 "[sps]тест" - "[sps]тест" - Какой смысл в пробеле? Что бы обойти включение в var0 кавычек?

Поясню, при var0 = SASA
Так var0 := var1 "[sps]тест"  Результат в var0 > SASAtest
Так var0 := var1 "[NOTsps]тест"  Результат в var0 > SASA"test"
Верно?

P.S. Просто я немного запутался где ставить пробел, а где он не принципиален.

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

6 (изменено: Indomito, 2012-03-13 17:53:41)

Re: AHK: Сложение текстовых переменных/констант без %%

Проверил на тесте и надо так

;-------БЛОК 2----------
; Cменить иконку
mcTray := mcCFW "McTray.exe"
Menu, Tray, Icon, %McTray%,, 1

Видимо мы друг друга не так поняли

А за "=" и ":=" спасибо... я просто не сразу понял разницы

P.S.

;-------БЛОК 1----------
; Путь к McAfee
mcPath := "C:\Program Files (x86)\McAfee\"
mcVSE  := mcPath "VirusScan Enterprise\"
mcCFW  := mcPath "Common Framework\"
;-----------------------
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

7 (изменено: creature.ws, 2012-03-13 17:59:25)

Re: AHK: Сложение текстовых переменных/констант без %%

Если в переменную нужно записать строку содержащую пробел,
то это можно сделать так: var := " " ← пробел заключен в кавычки.
Либо так: var := A_Space ← в переменную var записывается содержимое системной переменной A_Space - пробел.

С учётом перспектив развития AHK я бы рекомендовал использовать: для присваивания :=, для проверки равенства =.

8 (изменено: Indomito, 2012-03-13 18:10:45)

Re: AHK: Сложение текстовых переменных/констант без %%

Тогда ещё вопрос, как следует записать (правильно) функцию вызова RUN с учётом использования := , а не = ?
Было

;-------БЛОК 3----------
;--- Запуск консоли McAfee
LWin & CapsLock::
RWin & CapsLock::
mcConsol = mcconsol.exe
mcKey1 = /NOSPLAS
Run, %mcConsol% %mcKey1%, %mcVSE%
;-----------------------

Стало

;-------БЛОК 3----------
;--- Запуск консоли McAfee
LWin & CapsLock::
RWin & CapsLock::
mcConsol := "mcconsol.exe"
mcKey1 := "/NOSPLAS"
Run, %mcConsol% %mcKey1%, %mcVSE%
;-----------------------

По сути то разницы не должно быть, но мало ли....

P.S. Нет - всё работает, просто я что то сам себе не верю

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

9

Re: AHK: Сложение текстовых переменных/констант без %%

mcConsol := "mcconsol.exe"
mcKey1 := "/NOSPLAS"
Run, %mcConsol% %mcKey1%, %mcVSE%

10

Re: AHK: Сложение текстовых переменных/констант без %%

creature.ws
Данный вопрос исчерпан.
Спасибо за помощь.

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

11

Re: AHK: Сложение текстовых переменных/констант без %%

Хотелось бы вернуться к вопросу о конкатенации строк и переменных.
Формирую строки для отправки в логи и возникла необходимость объединять текстовки со значениями переменных.
Простой пример:

printString(num)
  {
    stringToMsg := "This is" . %num% . " digit"
    MsgBox, %stringToMsg%
  }

!d::
  printString(100)
return

В итоге получаю не This is 100 digit, а This is digit - значение переменной не попадает в строку!
Казалось бы простейшая операция, почитал еще раз документацию, попробовал уже такие варианты:
с пробелом

stringToMsg := "This is" %num% " digit"

с двумя амперсандами

stringToMsg := "This is"&&%num%&&" digit"

и даже более экзотический

stringToMsg := "This is"
stringToMsg .=%num%
stringToMsg .=" digit"

Все равно строка не формируется. Если навесить

MsgBox, %num%

переменную показывает.

Подскажите, где я делаю ошибку?

12

Re: AHK: Сложение текстовых переменных/констант без %%

printString(num)
  {
    stringToMsg := "This is " . num . " digit"
    MsgBox, %stringToMsg%
  }

!d::
  printString(100)
return
Как сказал мой дед - Я твой дед

13 (изменено: Malcev, 2014-10-17 18:27:19)

Re: AHK: Сложение текстовых переменных/констант без %%

А зачем писать точки, когда можно и без них.

printString(num)
  {
    stringToMsg := "This is " num " digit"
    MsgBox, %stringToMsg%
  }

!d::
  printString(100)
return

Либо:

printString(num)
  {
    stringToMsg = This is %num% digit
    MsgBox, %stringToMsg%
  }

!d::
  printString(100)
return

Понять все это очень просто.
При таком присваивании ":=" Переменные пишем как они есть, просто текст обрамляем в кавычки, если нужна кавычка в тексте дублируем ее  "".
При таком присваивании "=" Переменные обрамляем в знаки процента, просто текст оставляем таким какой он есть, если нужен знак процента в тексте, то перед ним ставим апостроф `.

14

Re: AHK: Сложение текстовых переменных/констант без %%

А зачем писать точки, когда можно и без них.

А можно и с ними, разницы нет?

Как сказал мой дед - Я твой дед

15

Re: AHK: Сложение текстовых переменных/констант без %%

Спасибо за разъяснения!
Примеры вводят в заблуждения.