Ir para conteúdo
Fórum Script Brasil
  • 0

Estrutura de condiçao!


cristofermartins

Pergunta

procedure TForm1.Button1Click(Sender: TObject);

var X, Y, a,b,D,e: Integer;

begin

x := 3;

y := 2;

If (X > Y) {Condição - SE X for maior que Y}

Then Begin

a := 1;

b := 1;

d := 2;

End { Repare que não tem ponto e vírgula por que "End" está antes do "Else"}

Else Begin

d := 1;

e := 2;

End;

end;

depois de muito tentar consegui fazer o delphi 7 para de reclamar dos erros...

so que como voces vem o x ta com valor 3 e o y ta com valor 2...e como o x ta maior que o y tem que entrar na estrutura de condiçao( a := 1)...

como resolver?

no visual basic 6 nunca tive problema com isso e logo o delphi fica com essa merda de estruçao que deveria da certo....

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
depois de muito tentar consegui fazer o delphi 7 para de reclamar dos erros...
Estas "reclamações" evitam muitos erros de execução que em VB podem ocorrer (dependendo do programador).

so que como voces vem o x ta com valor 3 e o y ta com valor 2...e como o x ta maior que o y tem que entrar na estrutura de condiçao( a := 1)...

como resolver?

Voce não disse o que queria resolver. Então, sabendo que a condição está correta e que o then "deveria" ser executado, imagino que você esteja depurando o programa e percebeu algo de "errado".

Vejamos, basicamente o código Delphi:

procedure TForm1.Button10Click(Sender: TObject);
var X, Y, a,b,D,e: Integer;
begin
  x := 3;
  y := 2;
  If (X > Y) {Condição - SE X for maior que Y}
  Then Begin
    a := 1;
    b := 1;
    d := 2;
    ShowMessage('Teste');
  End       { Repare que não tem ponto e vírgula por que "End" está antes do "Else"}
  Else Begin
    d := 1;
    e := 2;
  End;
end;
é o mesmo do código VB (ele não deixa colocar o then abaixo do if):
Sub Botão1_Clique()
  Dim x, y, a, b, d, e As Integer
  
  x = 3
  y = 2
  If (x > y) Then ' {Condição - SE X for maior que Y}
    a = 1
    b = 1
    d = 2
  End ' { Repare que não tem ponto e vírgula por que "End" está antes do "Else"}
  Else
    d = 1
    e = 2
  End If
End Sub
no visual basic 6 nunca tive problema com isso e logo o delphi fica com essa merda de estruçao que deveria da certo...
Aqui acho que chegamos a uma boa diferença entre os dois. Eu diria que a m..., quem faz é o VB. Se você olhar para o código, do ponto de vista do resultado final (que será seu executável), o que estará sendo processado de útil a partir das atribuições feitas à a, b e d? A resposta é nada! O Delphi ao otimizar o código, percebe que o "programador" cometeu este deslize e simplesmente ignora esta "coisa sem sentido". Voce deve ter observado que ao compilar o programa (CTRL+F9), aparecem na "régua" à esquerda do editor, pequenas bolinhas azuis as quais representam linhas para as quais foram gerados código. Acrescente, ao final da procedure, a linha:
...
  End;
  ShowMessage('Valor da variável "a": ' +IntToStr(a));  // <<< ESTA LINHA
end;

e compile. Você verá que já teremos uma bolinha azul ao lado da linha de atribuição a := 1;, pois agora, estaremos fazendo uso desta variável.

Mas se você achar que realmente fizer questão de gerar código para estas linhas sem finalidade, acesse as opções do projeto e na guia Compiler, no quadro Code Generation, desative a opção Optimization.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...