Ir ao conteúdo
  • Cadastre-se

Probelminha Com Delphi 7


horaciocs

Posts recomendados

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

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!