Problema de lógica (desvio condicional)
Quando eu uso o outro proximo else, ele não identifica a variável...
Um exemplo: Eu mando um valor ´VARALPHA´ para a varável senão, eu envio ´VAROMEGA´, mas ele não lê o ´VAROMEGA´...
E nenhum valor seguinte...
[b:a94e717035][color=red:a94e717035]Título editado pelo Moderador (AZ) - Removido: ´Um probleminha...´[/color:a94e717035][/b:a94e717035]
Um exemplo: Eu mando um valor ´VARALPHA´ para a varável senão, eu envio ´VAROMEGA´, mas ele não lê o ´VAROMEGA´...
E nenhum valor seguinte...
[b:a94e717035][color=red:a94e717035]Título editado pelo Moderador (AZ) - Removido: ´Um probleminha...´[/color:a94e717035][/b:a94e717035]
Jasig Aurumalfa
Curtidas 0
Respostas
Fórum Vini
21/02/2004
Poderia explicar melhor seu problema? :?:
Vinicius.
Vinicius.
GOSTEI 0
Jasig Aurumalfa
21/02/2004
Meu problema eh igual esse exemplo abaixo:
If VARSTRING=´VARALPHA´ then
begin
VARALPHAFORM.Show //Esse ele lê
end
else
begin
If VARSTRING=´VAROMEGA´ then
begin
VAROMEGAFORM.Show //Esse ele não lê
end;
end;
If VARSTRING=´VARALPHA´ then
begin
VARALPHAFORM.Show //Esse ele lê
end
else
begin
If VARSTRING=´VAROMEGA´ then
begin
VAROMEGAFORM.Show //Esse ele não lê
end;
end;
GOSTEI 0
Marco Salles
21/02/2004
Deveria Ler Sim...Eu Não Vejo Nada De Errado Com a Lógica Do Seu Código, Tirando é Claro a Sinta-se(Excesso De Begin-end), Mas Esta Situação Não É Calamitosa Devido ao Fato Que Voce Mencionou Em Outro Tópico Que Esta Querendo Se Familarizar Com If-Else...O Que Eu Posso De Dizer entre Outras Coisas é o Seguinte: Ou o Valor De ´VARSTRING´
Nunca é ´VAROMEGA´ , Ou O Form VAROMEGAForm Não Foi Criado, Mas Isto Deveria Dar Um Erro Na Execução :?: No Mais Olhe Só Com Poderemso Escrever o Seu Código Com Menos Begin-end
Nunca é ´VAROMEGA´ , Ou O Form VAROMEGAForm Não Foi Criado, Mas Isto Deveria Dar Um Erro Na Execução :?: No Mais Olhe Só Com Poderemso Escrever o Seu Código Com Menos Begin-end
If VARSTRING=´VARALPHA´ then VARALPHAFORM.Show //Esse ele lê else If VARSTRING=´VAROMEGA´ then VAROMEGAFORM.Show //Esse ele não lê
GOSTEI 0
Jasig Aurumalfa
21/02/2004
Obrigado pela ajuda, um professor meu me disse que eu deveria ter cuidado com o exesso de Begin´s, mas tal erro na lógica poderia causar tal efeito?
GOSTEI 0
Marco Salles
21/02/2004
Talvez, Eu Não Mencionei Anteriormente Mas ´Tecnicamente´ Esta Faltando Dois Pontos e Vírgula No Seu Código, Não Entendi a Sua Colocação Mas Tirando a Sinta-se, Voce Consegui Ou Não Consegui ´Ler´
o ´VAROMEGA´ :?: :?: :?:
Voce Escreveu o Código Abaixo:
Tecnicamente Esta Faltando Dois Pontos e Virgula No Seu Código:
Diga-se De Passagem Que Foi Assinala-do Para Voce, Em Outro Tópico Que Antes Do Else Não Se Usa Ponto-Virgula, Mas é na Istrução Imediatamente ANTERIOR E Não Em Toda Instrução Anterior...Mas Voce,
Consegui Ou Não Ler 0 o ´VAROMEGA´ :?: :?: :?:
o ´VAROMEGA´ :?: :?: :?:
Voce Escreveu o Código Abaixo:
If VARSTRING=´VARALPHA´ then begin VARALPHAFORM.Show //Esse ele lê end else begin If VARSTRING=´VAROMEGA´ then begin VAROMEGAFORM.Show //Esse ele não lê end; end;
Tecnicamente Esta Faltando Dois Pontos e Virgula No Seu Código:
If VARSTRING=´VARALPHA´ then begin VARALPHAFORM.Show; //Esse ele lê [color=darkred]*****Ponto e Vírgula[/color] end else begin If VARSTRING=´VAROMEGA´ then begin VAROMEGAFORM.Show; //Esse ele não lê [color=red]*****Ponto e Virgula[/color] end; end;
Diga-se De Passagem Que Foi Assinala-do Para Voce, Em Outro Tópico Que Antes Do Else Não Se Usa Ponto-Virgula, Mas é na Istrução Imediatamente ANTERIOR E Não Em Toda Instrução Anterior...Mas Voce,
Consegui Ou Não Ler 0 o ´VAROMEGA´ :?: :?: :?:
GOSTEI 0
Marcelo
21/02/2004
Tente fazer o seguinte:
If UpperCase( VARSTRING ) = ´VARALPHA´ then
VARALPHAFORM.Show
else
VAROMEGAFORM.Show;
Certamente assim você terá algum resultado!
Valeu?
If UpperCase( VARSTRING ) = ´VARALPHA´ then
VARALPHAFORM.Show
else
VAROMEGAFORM.Show;
Certamente assim você terá algum resultado!
Valeu?
GOSTEI 0
Aroldo Zanela
21/02/2004
Colega,
Não há nenhum problema no seu código. Fiz uma simplificação mantendo ´begins e ends´ e a estrutura lógica para quem quiser testar, pois funciona para ambos os valores:
Não há nenhum problema no seu código. Fiz uma simplificação mantendo ´begins e ends´ e a estrutura lógica para quem quiser testar, pois funciona para ambos os valores:
var varString: String; begin varString := ´VAROMEGA´; If VARSTRING=´VARALPHA´ then begin ShowMessage(´VarAlphaForm´) end else begin // Tudo que for diferente de VARALPHA If VARSTRING=´VAROMEGA´ then begin ShowMessage(´VarOmegaForm´) end; end; end;
GOSTEI 0
Tnaires
21/02/2004
[quote:5e55e2e7d5=´Marco Salles´]Diga-se De Passagem Que Foi Assinala-do Para Voce, Em Outro Tópico Que Antes Do Else Não Se Usa Ponto-Virgula, Mas é na Istrução Imediatamente ANTERIOR E Não Em Toda Instrução Anterior...[/quote:5e55e2e7d5]
De fato, eu deveria ter sido mais claro. Grande marco.
De fato, eu deveria ter sido mais claro. Grande marco.
GOSTEI 0
Jasig Aurumalfa
21/02/2004
Jah q você pode alterar o título, poderia colocar:
Dúvida no desenvolvimento do comando ele...
Seria mais claro...
Dúvida no desenvolvimento do comando ele...
Seria mais claro...
GOSTEI 0
Beppe
21/02/2004
[quote:4569ca8091=´Jasig Aurumalfa´]Jah q você pode alterar o título, poderia colocar:
Dúvida no desenvolvimento do comando ele...
Seria mais claro...[/quote:4569ca8091]
Ue, o el[b:4569ca8091]s[/b:4569ca8091]e ja esta desenvolvido...
Dúvida no desenvolvimento do comando ele...
Seria mais claro...[/quote:4569ca8091]
Ue, o el[b:4569ca8091]s[/b:4569ca8091]e ja esta desenvolvido...
GOSTEI 0
Facundo
21/02/2004
Sobre uma afirmação que fizeram nesta pergunta. A falta dos dois ponto-e-virgulas não deu erro porque em pascal a última linha dentro de uma sequencia begin end não precisa ter ponto-e-virgula. Como ele só colocou uma linha dentro de cada begin end, esta não precisa do terminador. Ex.:
Begin If (a = 1) Then Begin ShowMessage(´a = 1´); edCodigo.SetFocus; Exit //Vejam que aqui não precisa ´;´ End; ShowMessage(´Fim sequencia´) //Aqui também não precisa ´;´ end;
GOSTEI 0
Beppe
21/02/2004
Sobre uma afirmação que fizeram nesta pergunta. A falta dos dois ponto-e-virgulas não deu erro porque em pascal a última linha dentro de uma sequencia begin end não precisa ter ponto-e-virgula. Como ele só colocou uma linha dentro de cada begin end, esta não precisa do terminador. Ex.:
Exato, porque em Pascal(Delphi), o ; é separador, e não terminador de comandos.
GOSTEI 0
Marco Salles
21/02/2004
Concordo Em Genero, Numero e Grau...Apenas Coloquei o Termo:
´Tecnicamente´:
´Tecnicamente´:
Talvez, Eu Não Mencionei Anteriormente Mas ´[color=red:c1eb6347b5]Tecnicamente´ [/color:c1eb6347b5]Esta Faltando Dois Pontos e Vírgula No Seu Código
....O Que Acontece Que o Nosso Amigo ´Jasig Aurumalfa´ Tinha Já Feito Em Outro Tópico Uma Pergunta Sobre a Estrutura If-Else e Foi Colocado Para Ele Uma Estrutura Toda Sem Ponto-Virgula..Para O Amigo Não Levar Isto Como Regra Pensei Ser Melhor Que o ´Jasig Aurumalfa´ Aprenda Primeiro o Caminho, Para Depois Aprender O Atalho...GOSTEI 0