1 (изменено: Malcev, 2014-04-30 01:50:53)

Тема: AHK: Значение переменной значения переменной

Как в msgbox получить единицу используя только переменную "c"?
Так не работает.

a = 1
b = a
c = b
msgbox % %%c%%

2

Re: AHK: Значение переменной значения переменной

Значение переменной значения переменной

Заголовок огонь.
А задача увидеть в переменной 1, которая равна обычной букве, заставляет задуматся. Может

%%%%c%%%%

Хотя нет, почему то.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Значение переменной значения переменной

Ладно, бывает:


a := 1
b := a
c := b
msgbox % c
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4 (изменено: bWRmeA, 2014-04-30 02:12:50)

Re: AHK: Значение переменной значения переменной

a := 1
b := "a"
c := "b"

Transform c, Deref, % "%" c "%" ; c := %c%
Transform c, Deref, % "%" c "%" ; c := %c%

MsgBox % c
a := 1
b := &a
c := &b

MsgBox % StrGet(StrGet(c))

5

Re: AHK: Значение переменной значения переменной

bWRmeA, а если отсылок неизвестное количество?

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

6

Re: AHK: Значение переменной значения переменной

Это интересно. Но в каких случаях это вообще может быть применено?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Значение переменной значения переменной

serzh82saratov пишет:

Это интересно. Но в каких случаях это вообще может быть применено?

Затрудняюсь, по-моему чисто теоретический интерес. Обычно отсылка бывает всего одна, типа:

var1 := 1, var2 := 2, var3 := 3
str := "var1|var2|var3"
Loop, parse, str, |
   MsgBox, % %A_LoopField%
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: bWRmeA, 2014-04-30 02:35:56)

Re: AHK: Значение переменной значения переменной

teadrinker пишет:

bWRmeA, а если отсылок неизвестное количество?

Почему если? Оно и так неизвестно. Два derefa и две вложенности это случайное совпадение

9

Re: AHK: Значение переменной значения переменной

М-м-м... Я чего-то не понимаю?

a := 1
x := "a"
b := "x"
c := "b"

Transform c, Deref, % "%" c "%" ; c := %c%
Transform c, Deref, % "%" c "%" ; c := %c%

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

10 (изменено: bWRmeA, 2014-04-30 02:56:08)

Re: AHK: Значение переменной значения переменной

В c, b  лежат символы никак не указывающие на то, что они являются ссылкой на переменную, глубина вложенности задаётся логикой кода (бредового) примера, если бы в "c" была строка "%%b%%" тогда можно было бы сказать, что два deref не охватывают возможную неограниченную глубину вложенности в "с".

если отсылок неизвестное количество?

Вопрос некорректный, количество отсылок неизвестно изначально.

11

Re: AHK: Значение переменной значения переменной

bWRmeA пишет:

Вопрос некорректный, количество отсылок неизвестно изначально.

Не совсем понял. Как же неизвестно, если вы подразумеваете ровно две вложенности?
Можно переформулировать вопрос. Как точно узнать, что переменная является отсылкой на другую?

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

12

Re: AHK: Значение переменной значения переменной

Мой ход мысли такой:

c := 1
MsgBox, % &%c%

Но почему-то выдаёт результат, и все время один, независимо от значения.

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

13 (изменено: bWRmeA, 2014-04-30 20:27:17)

Re: AHK: Значение переменной значения переменной

если вы подразумеваете ровно две вложенности

Это код в первом посте подразумевает.

Как точно узнать, что переменная является отсылкой на другую

Средствами синтаксиса ahk? Никак.

Но почему-то выдаёт результат, и все время один, независимо от значения.

Это признак что переменная не инициализирована, один результат для всех неинициализированных переменных.
То, что в переменной хранится строка, которую можно интерпретировать как имя существующей переменной, не является достаточным аргументом для утверждения, что переменная является отсылкой на другую.

Если договориться о синтаксисе создания псевдонимов для переменных:

a := 1
b := "%a%"
c := "%b%"

MsgBox % Deref(c)

Deref(var) { ; без проверок правильности синтаксиса
    while InStr(var, "%")
        Transform var, Deref, % var
    return var
}

Другое вопрос, для чего это может быть нужно.

14

Re: AHK: Значение переменной значения переменной

Malcev пишет:

Как в msgbox получить единицу используя только переменную "c"?
Так не работает.

a = 1
b = a
c = b
msgbox % %%c%%

a = 1
b = %a%
c = %b%
msgbox % c

15

Re: AHK: Значение переменной значения переменной

bWRmeA пишет:

Если договориться о синтаксисе создания псевдонимов для переменных:

a := 1
b := "%a%"
c := "%b%"

MsgBox % Deref(с)

Deref(var) { ; без проверок правильности синтаксиса
    while InStr(var, "%")
        Transform var, Deref, % var
    return var
}

Другое вопрос, для чего это может быть нужно.

Вообще-то не работает .

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

16 (изменено: Irbis, 2014-04-30 19:42:58)

Re: AHK: Значение переменной значения переменной

Оно и понятно: если открыть в отладке variables and their contents, нам предстанут две переменные с именем "c"

Вывод: Punto Switcher - зло

Мои пять копеек по этому вопросу: Соглашение по созданию псевдонимов все же необходимо, ибо как заметил bWRmeA, наличие непустой строки в переменной не есть аргумент, чтобы интерпретировать содержимое переменной как ссылку на другую переменную, даже если это и будет формально допустимым. Например, если а := 1, то "1" по сути тоже переменная, содержащая значение первого переданного скрипту параметра.

Global _:= "ref_"
a := 321
b = %_%a
c = %_%b
d = %_%c

MsgBox % Deref(d)

Deref(var) {
Return (InStr(var, _) && var := SubStr(var, ++StrLen(_))) ? Deref(%var%) :  var
}

17

Re: AHK: Значение переменной значения переменной

Вообще-то не работает

Исправил опечатку.