unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Edit3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,c,Delta :Double;
  x1,x2 :Double;
  IloscPierwiastkow :Integer;
begin
try
  a:=StrToFloat(Edit1.Text);
  b:=StrToFloat(Edit2.Text);
  c:=StrToFloat(Edit3.Text);
except
  on E: EConvertError do
    begin
    Edit4.Clear;
    ShowMessage('Błąd konwersji współczynników równania!'+#13+'Komunikat wyjątku: '+E.Message);
    Exit;
    end;
else
  begin
  Edit4.Clear;
  ShowMessage('Wystąpił nierozpoznany typ błędu!');
  Exit;
  end;
end;
Delta:=b*b-4*a*c;
IloscPierwiastkow:=0;
if Delta>0 then IloscPierwiastkow:=2;
if Delta=0 then IloscPierwiastkow:=1;
case IloscPierwiastkow of
  0: Edit4.Text:='Brak rozwiązań (delta mniejsza od zera)';
  1:
    begin
    x1:=-b/(2*a);
    x2:=x1;
    Edit4.Text:='Pierwiastek podwójny:  x='+FloatToStr(x1);
    end;
  2:
    begin
    x1:=(-b-Sqrt(Delta))/(2*a);
    x2:=(-b+Sqrt(Delta))/(2*a);
    Edit4.Text:='Dwa rozwiązania:  x1='+FloatToStr(x1)+',  x2='+FloatToStr(x2);
    end;
else
  //Edit4.Text:='Błąd!';
  raise Exception.Create('Niemożliwa do określenia ilość rozwiązań równania');
end;
ShowMessage(Edit4.Text);
end;

end.
