Лучше написать так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
x, fx :real;
value : extended;
begin
if not tryStrToFloat(edit1.Text, value) then
ShowMessage('введено некорректное число')
else
begin
x := strtofloat(edit1.Text);
if x > 0 then
begin
fx := x + ln(x);
edit2.Text:=floattostr(fx);
end;
end;
end;
По хорошему надо проверять является ли числом то что мы напечатали в edit1
