cristofermartins Postado Dezembro 28, 2008 Denunciar Share Postado Dezembro 28, 2008 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 Begind := 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.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Dezembro 29, 2008 Denunciar Share Postado Dezembro 29, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
cristofermartins
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
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.