Du gehst davon aus, dass der Benutzer in das Edit nur Zahlen eingibt. Er kann aber auch Buchstaben eingeben, und aus Buchstaben kann StrToFloat() keine Zahl machen, darum die Fehlermeldung.
Lösungen:
1) Den Fehler wenn er auftritt abfangen:
Delphi-Quellcode:
try
h := strtofloat(edit2.text);
x2 := strtofloat(edit4.text);
x1 := strtofloat(edit3.text);
except
showmessage('Bitte nur Zahlen eingeben!');
end;
Das ist aber nicht empfehlenswert... besser ist:
Delphi-Quellcode:
if not TryStrToFloat(edit2.text, h) then
showmessage('Bitte nur Zahlen eingeben!');
Und am besten ist dem Benutzer keine Falscheingaben zu erlauben:
Delphi-Quellcode:
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', ',', #8]) then
key := #0;
end;