Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
horaciocs

Probelminha Com Delphi 7

Recommended Posts

Fala pessoal, beleza? Eu to começando a mexer com delphi, e agora eu to tentando fazer um programa que calcule as soluções de uma equação de segundo grau qualquer (Bhaskara). Eu fiz a parte do cálculo e deu tudo certo, o problema é q eu queria fazer com que conforme os valores do delta (b² - 4ac, lembram? :D ) variassem (<0, =0 ou >0), o programa tivesse 3 comportamentos diferentes. Dêem uma olhada num pedaço do código:

var
 Form1: TForm1;
 a,b,c,final,final2: real;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
a:=StrTofloat(Edit1.Text);
b:=StrTofloat(Edit2.Text);
c:=StrTofloat(Edit3.Text);

if ((b * - (4 * a * c)) < 0 then
 ShowMessage('Não existe solução real')

else

final:= (-b + sqrt((b * - (4 * a * c))) / (2 * a);
final2:= (-b - sqrt((b * - (4 * a * c))) / (2 * a);

if ((b * - (4 * a * c)) > 0 then
   Edit4.Text:=floattostr(final);
   Edit5.Text:=floattostr(final2);

if ((b * - (4 * a * c)) = 0 then
 Edit4.Text:=floattostr(final);


end;


end.

O problema que eu estou tendo é que, logo no começo, quando tem o teste para <0, eu queria que aparecesse uma janela e que o código parasse. Eu tentei usar 'halt' entre o teste e o 'else', mas ele fecha o programa também, então não ajuda muito.

O que eu posso usar para parar a execução do código mas não fechar o programa? Aceito qualquer ajuda! :)

Valeu!

Horacio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logo depois do then, ou do else, você deve por um comando, que será executado ou não, dependendo da condição no if.

O comando para sair da rotina é Exit;

Para agrupar vários comandos num só(ou melhor, fazer o Pascal/Delphi tratar como se fosse um grupo de comandos executado na ordem) use begin/end.

begin
...
 if ((b * - (4 * a * c)) < 0 then
  ShowMessage('Não existe solução real')

 else
 begin

   final:= (-b + sqrt((b * - (4 * a * c))) / (2 * a);
   final2:= (-b - sqrt((b * - (4 * a * c))) / (2 * a);

   if ((b * - (4 * a * c)) > 0 then
     Edit4.Text:=floattostr(final);
     Edit5.Text:=floattostr(final2);

   if ((b * - (4 * a * c)) = 0 then
     Edit4.Text:=floattostr(final);
 end
...
end

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×