Hola. Veo varias errores (despistes).
ShowMessage('Error!! No se puede Dividir entre 0')
Bueno, en realidad, si a=0, entonces deja de ser una ecuación de segundo grado, por lo que es más fácil resolverla: x=-c/b
a·x^2 + b·x + c = 0
si a=0
b·x + c = 0 ; b·x = -c ; x = - c / b
Pero vayamos a la programación.
else
x1:= sqrt (d);
x:= (b*b) - 4 *(a*c);
d:= x/2*(a);
Al principio haces sqrt(d), pero d no tiene ningún valor asignado anteriormente, así que la función sqrt se saca un resultado cero de la manga. Después
x2:= -b + x1; pues -b + 0... por eso te falla.
Lo que tienes que hacer es escribir las cosas ordenadamente, pues es así como el compilador interpreta el código. Quedaría algo así:
Código Delphi
[-]
var
a, b, c: Integer;
x1, x2, r: Real;
begin
a:= StrToInt (Edit1.Text);
b:= StrToInt (Edit2.Text);
c:= StrToInt (Edit3.Text);
If a = 0 then Edit4.Text:=FloatToStr(-c/b) else
begin r:= b*b - 4*a*c; if r<0 then ShowMessage('Error!! Raiz Negativa Es Imaginario') else
begin
r:=Sqrt(r); x1:=(-b+r)/(2*a);
x2:=(-b-r)/(2*a); Edit4.Text:= FloatToStr(x1) + ' y ' + FloatToStr(x2);
end;
end;
end;
Espero que lo hayas entendido.
Y por favor, la próxima vez elabora un poco más la pregunta. Por ejemplo, coloca el código de forma más ordenada, dinos por qué/para qué utilizas las variables, etc... ayudará a obtener una mejor respuesta
Salu2.