Fórum Else esta errado? #392661

16/12/2010

0

begin
  if edit9.Text > edit8.Text then
  begin
  Edit10.text:=FloatToStr(StrToFloat(Edit9.text) - StrToFloat(Edit8.text))
  else
  edit10.Text:=0
  end


end;

Pessoal onde esta o erro q o else fica sublinhado

Quero que quando  edit 9 for > q edit 8 faço caso nao seja ele deixe o valor de edit 10 = a 0

Nesse meu caso edit 10 e um troco
Adilson Soares

Adilson Soares

Responder

Posts

16/12/2010

Wesley Yamazack

Olá meu caro,


Como você tem apenas uma linha de comando para ser executada no if, e depois já vem o else


  if edit1.Text > edit2.Text then
    Edit3.text:= FloatToStr(StrToFloat(edit1.text) - StrToFloat(edit2.text))
  else
    Edit3.Text:=0;




Você tinha colocado um Begin, onde e para isso precisaria de um end, antes do else, veja um exemplo para quando você tiver que executar mais de uma linha para um if ou para um else.





  if edit1.Text > edit2.Text then
  begin

    Edit3.text:= FloatToStr(StrToFloat(edit1.text) - StrToFloat(edit2.text))
    .
    .
    .
    .
  end

  else
  begin

    Edit3.Text:=0;
    .

    .

    .

    .
  end;








Um abraço

Wesley Y.
wyamazack@hotmail.com


Responder

Gostei + 0

16/12/2010

Adilson Soares



begin
  if edit9.Text > edit8.Text then
  begin
  Edit10.text:=FloatToStr(StrToFloat(Edit9.text) - StrToFloat(Edit8.text))
  end
  else
    edit10.Text:=0;
  begin


  end;

end;

é assim correto?
deu erro no edit 10 assim:

[DCC Error] U_AgendamentoPrincipal.pas(662): E2010 Incompatible types: 'string' and 'Integer'




Responder

Gostei + 0

16/12/2010

Wesley Yamazack

Olá meu caro,

Veja como seria :

 

procedure TForm2.FormCreate(Sender: TObject);
begin
  if edit9.Text > edit8.Text then
     Edit10.text:=FloatToStr(StrToFloat(Edit9.text) - StrToFloat(Edit8.text))
  else
    edit10.Text:=0;
end;




procedure TForm2.FormCreate(Sender: TObject);

begin

  if edit9.Text > edit8.Text then
  begin

     Edit10.text:=FloatToStr(StrToFloat(Edit9.text) - StrToFloat(Edit8.text));
     //Programe aqui outras linhas caso seja necessário, veja que a ultima linha antes do Else não tem ";"
  end

  else
  begin

    edit10.Text:=0;
     //Programe aqui outras linhas caso seja necessário
  end;

end;






Att,

Wesley Y
wyamazack@hotmail.com
Responder

Gostei + 0

16/12/2010

Emerson Nascimento

sempre que você precisar executar mais de um comando, envolva-os num begin..end.

procedure TForm2.FormCreate(Sender: TObject);
begin
  if edit9.Text > edit8.Text then
     Edit10.text:=FloatToStr(StrToFloat(Edit9.text) - StrToFloat(Edit8.text))
  else
    edit10.Text:='0';
end;

no exemplo acima há somente 1 comando para cada condição:
- se o conteúdo do edit9 for maior que o conteúdo do edit8, coloca o conteudo de uma operação no edit10, caso contrário o edit10 passa a valer '0'.

agora se você quiser fazer a conta e mostrar uma mensagem, dentro de uma das condições, você envolve os comandos com begin..end.


procedure TForm2.FormCreate(Sender: TObject);
begin
  if edit9.Text > edit8.Text then
     Edit10.text:=FloatToStr(StrToFloat(Edit9.text) - StrToFloat(Edit8.text))
  else
  begin
    edit10.Text:='0';
    ShowMessage('O segundo valor é menor que o primeiro!');
  end;
end;

note que a primeira condição resulta em apenas um comando - a soma - por isso não precisa (não precisa, mas pode) estar num begin..end. já na segunda condição são 2 comandos e isso obriga o uso de begin..end.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar