Bom dia Hologram.
Se você envolver o nome de uma variável em percentuais DENTRO de uma expressão matemática, você vai causar o efeito da dupla-dereferenciação. Este efeito existe para que você possa definir os nomes de variáveis de maneira dinâmica (ou seja, o nome da variável a ser dereferenciada está dentro de outra variável ou uma parte do nome está).
Dereferenciar significa buscar o conteúdo de uma variável. Dupla-Dereferenciação significa buscar o conteúdo de uma variável cujo
nome é conteúdo de outra variável.
Por este motivo, se você quiser simplesmente usar o conteúdo da variável
PosicaoX1 após o símbolo de inserção de valores matemáticos (
:=), você NÃO deve usar percentuais.
Code: Select all
PosX1 := PosX1 + PosicaoX1
PosY1 := PosY1 + PosicaoY1
Exemplos ilustrativos de como deve ser usado:
Exemplo de Dereferenciação simples da variável VAR:
Code: Select all
VAR := 3
RES := 2 + VAR
msgbox % RES
Exemplo de Dupla-Dereferênciação da variável VAR:
Code: Select all
VAR := 3
NOME_DE_VAR := "VAR"
RES := 2 + %NOME_DE_VAR%
msgbox % RES
Exemplo de dupla-dereferênciação da variável VAR
para reconstrução dinâmica do nome da variável:
Code: Select all
VAR_1 := 10
VAR_2 := 30
VAR_3 := 50
Loop 3
{
NOME_DE_VAR := "VAR_" . A_Index
RES := 2 + %NOME_DE_VAR%
msgbox % RES
}
No código acima, usamos a iteração atual do loop (A_Index) para que o mesmo código acesse variáveis diferentes em diferentes iterações. Assim, na primeira iteração, o cálculo de RES vai buscar o conteúdo de VAR_1 (que é 10) e somar 2 a ele, de modo que a msgbox vai apresentar 12. Já na segunda iteração, o mesmo cálculo de RES agora vai buscar o conteúdo de VAR_2 (que é 30) e somar 2 a ele, de modo que a msgbox vai apresentar 32. Por fim, na terceira iteração do loop, faremos uso do conteúdo de VAR_3, que é 50. Com isso, a última iteração vai apresentar 52 como resposta.
Espero ter ajudado, se ainda tiver alguma dúvida sobre o tema, basta postar abaixo.