ajuda com If

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: ajuda com If

Re: ajuda com If

Post by cimerio7 » 19 Jul 2019, 07:55

mt obrigado. :thumbup:

Re: ajuda com If

Post by Gio » 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.

Re: ajuda com If

Post by cimerio7 » 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

Re: ajuda com If

Post by Gio » 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:

ajuda com If

Post by cimerio » 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?

Top