Delphi - Másodfokú egyenletet megoldó komponens készítése

forráskód letöltése
Készítünk egy komponenst, amely segítségével könnyedén meghatározhatjuk egy teljes másodfokú egyenlet két gyökét, amennyiben azok léteznek. A gyökök meghatározásához a megoldó képletben szereplő A, B, C tagok értékét kell megadnunk.
A mellékelt példaprogram megnyitása előtt a SecondFormula.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens működésének alapja a másodfokú egyenlet megoldó képlete. A képlet A, B, C tagjainak értékét a komponens megfelelő nevű property-jében adhatjuk meg.
Az eredményt a Calculate eljárás meghívásával kapjuk meg.
procedure Calculate(var r: TSecFormResult);
Az eredményt az eljárásnak paraméterként megadott, TSecFormResult típusú változóban kapjuk vissza.
TSecFormResult = record
  x1: Extended;
  x2: Extended;
  ResIsAvailable: Boolean;
end;
Ha az egyenletnek létezik megoldása, akkor a két gyököt az x1 és x2 tagokban kapjuk meg, a ResIsAvailable értéke pedig igaz, ezzel jelezve, hogy van megoldás.
Ha nincs megoldás, akkor a ResIsAvailable értéke hamis, és az x1, x2 egyaránt 0 értéket tartalmaz.
A komponens Calculate eljárásában a megoldó képletet használjuk fel.
Disc:=Sqr(FB)-4*FA*FC;
if (Disc>=0) and (FA>0) then begin
  r.x1:=(-FB+Sqrt(Disc))/(2*FA);
  r.x2:=(-FB-Sqrt(Disc))/(2*FA);
  r.ResIsAvailable:=True;
end;
Egy másodfokú egyenletnek akkor nincs megoldása, ha a diszkrimináns (gyökjel alatti rész) értéke kisebb 0-nál, vagy ha az A tag értéke 0.