ajuda com If

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

cimerio
Posts: 47
Joined: 29 Apr 2019, 15:37

ajuda com If

12 Jul 2019, 14:11

pessoal, fiz um pequeno bloco com If, mas nao funciona. basicamente quero que, dado um determinado parametro (input), o script redirecione pra uma página.

Code: Select all

InputBox, nome, Digite o nome do sacado:

MsgBox, Vamos rodar a macro  :)

if (%nome% = "ajax")
	Run, opera.exe https depositojudicial.caixa.gov.br /sigsj_internet/depositos-judiciais/justica-estadual/  Broken Link for safety 
else if (%nome% = "suely")
	Run, opera.exe https depositojudicial.caixa.gov.br /sigsj_internet/depositos-judiciais/justica-trabalho/  Broken Link for safety 
else 
	return
com esse codigo, nada ocorre, se eu digitar suely ou ajax.

se eu tirar as aspas de ajax e suely, aí sempre abre a primeira pagina (justica-estadual), mesmo qd digito suely.

aonde estou errando?
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: ajuda com If

12 Jul 2019, 16:07

Boa tarde Cimério.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

A condicional If (expression) opera sobre uma expressão matemática e isso signfica que nessa situação os símbolos de percentual (%) NÃO se fazem necessários para evidenciar o conteúdo de uma variável.

Assim, o seu código está correto em termos lógicos, mas está incorrendo em um erro de syntaxe. Para corrigir, basta remover os percentuais do nome da variável dentro da expressão if:

Code: Select all

InputBox, nome, Digite o nome do sacado:

MsgBox, Vamos rodar a macro  :)

if (nome = "ajax")
	Run, opera.exe https depositojudicial.caixa.gov.br /sigsj_internet/depositos-judiciais/justica-estadual/  Broken Link for safety 
else if (nome = "suely")
	Run, opera.exe https depositojudicial.caixa.gov.br /sigsj_internet/depositos-judiciais/justica-trabalho/  Broken Link for safety 
else 
	return

:arrow: DICA: Este erro de syntaxe não foi descoberto pelo interpretador porque é um erro implícito, visto que o uso de percentuais ao redor do nome de variável dentro de expressões é na verdade permitido, mas apenas para um caso especial: o da dupla-dereferenciação. Isso significa que se você colocar símbolos de percentuais ao redor de uma variável dentro de uma expressão matemática, o interpretador vai entender que você está se referindo a uma variável cujo nome está dentro daquela outra variável.

Por exemplo, No código abaixo, veja como o valor de def (sem percentuais) é dereferenciado para o literal "var", mas o valor de %def% é duplamente-dereferenciado para 90, que é o conteúdo de uma variável que se chama Var:

Code: Select all

Var := 90
def := "Var"
msgbox % def
msgbox % %def%
Espero ter ajudado, qualquer dúvida basta postar abaixo :thumbup:
cimerio7
Posts: 12
Joined: 30 May 2019, 12:06

Re: ajuda com If

16 Jul 2019, 14:40

Ola, Gio, a sua dica resolveu meu problema.

acho que entendi um pouco o que vc quis dizer. eh um conceito dificil pra mim.

deve ter sido o mesmo conceito que apliquei no codigo abaixo sem saber:

Code: Select all

	Loop, 3 {
		Cpf%A_Index% := X1.Range("A" A_Index).Text               
		Banco%A_Index% := X1.Range("B" A_Index).Text
		Agencia%A_Index% := X1.Range("C" A_Index).Text
		Conta%A_Index% := X1.Range("D" A_Index).Text
	
	}
	
	n:= 1
	Loop, 3 {
		
	Send, % Cpf%n% 
no caso, tive que ir testando varias combinacoes, ate chegar no resultado esperado. sem saber pq esse deu certo. tinha tentado %Cpf% %n%, Cpf%n%, e varios outros
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: ajuda com If

16 Jul 2019, 15:32

Boa tarde Cimerio7.

O código que você postou é de fato um bom exemplo de dupla-dereferenciação: variáveis indexadas por números.

Quando temos listas de CPFs, por exemplo, podemos indexá-los colocando o primeiro em uma variável chamada CPF1, o segundo em CPF2... e assim por diante até o último, e com isso podemos trabalhar com todas possibilidades da mesma forma usando apenas um loop e a variável embutida A_Index.

Mas para fazer isso, também precisamos da Dupla-Derenferenciação, pois é ela que permite que formemos o nome da variável a ser dereferenciada usando nomes e/ou variáveis.

Alguns comandos, como o StringSplit, foram desenvolvidos pensando exatamente nessa técnica, que é na verdade relacionada ao conceito de arrays:

Exemplo (percorrendo todas as variáveis de uma lista separada por | usando StringSplit, um loop e o A_Index):

Code: Select all

ABC := "a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p"
StringSplit, ABC_, ABC, |

Loop % ABC_0
{
	msgbox % ABC_%A_Index%
}

:arrow: Você também poderá encontrar um tutorial que vai ajudá-lo a entender quando usar os percentuais neste link.
cimerio7
Posts: 12
Joined: 30 May 2019, 12:06

Re: ajuda com If

19 Jul 2019, 07:55

mt obrigado. :thumbup:

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 15 guests