Функция SQRT в Delphi

В качестве упражнения, которое я поставил перед собой, я хотел разработать калькулятор в Delphi. Итак, суммирование, вычитание, умножение и деление в значительной степени работают.

Единственная функция, с которой у меня проблемы, это Square Root.

Переменные расширены, и я просто конвертирую из String (я использую два EditBox) в Float.

var
   Form1: TForm1;
   a, b, r: Extended;

procedure TForm1.SqrtClick(Sender: TObject);
begin
   a  := StrToFloat(Edit1.Text);
   r  := Sqrt(a);
   ShowMessage(FloatToStr(r));
end;

Delphi возвращает меня

[Ошибка] calc.dpr(72): Отсутствует оператор или точка с запятой.


person Raúl Enrique Danglade    schedule 25.06.2013    source источник
comment
@Micha Wiednmann Только что сделал это, и все та же ошибка. Строка 72 это R:= Sqrt(a);   -  person Raúl Enrique Danglade    schedule 26.06.2013
comment
@MichaWiedenmann: Нет, там точка с запятой абсолютно не нужна. Точка с запятой используется не для завершения операторов, а для разделения двух операторов. Следовательно, вам не нужна точка с запятой после последней в блоке.   -  person Andreas Rejbrand    schedule 26.06.2013
comment
@AndreasRejbrand да, не понял :-(   -  person bummi    schedule 26.06.2013
comment
Пожалуйста, прекратите использовать глобальные переменные   -  person David Heffernan    schedule 26.06.2013


Ответы (1)


Проблема не очень видна в вашем фрагменте выше. Но так как у меня есть экстрасенсорные способности, я все еще могу сказать, что здесь происходит.

У вас есть кнопка под названием sqrt в вашей форме. Следовательно, когда вы пишете sqrt в коде, это относится к кнопке, а не к функции RTL.

Решение: напишите System.Sqrt вместо Sqrt (=Self.Sqrt, кнопка) или переименуйте кнопку.

person Andreas Rejbrand    schedule 25.06.2013
comment
@PieterB: Вы имеете в виду существование кнопки с именем sqrt? Одна подсказка - это имя SqrtClick процедуры, но я на самом деле не видел этого до того, как опубликовал свой ответ. Поскольку OP получил сообщение об ошибке Missing operator or semicolon на Sqrt(some number), очевидно, что Sqrt не является функцией или процедурой, но все же является допустимым идентификатором. Следовательно, это, скорее всего, объект. И не так уж неправдоподобно, что в калькуляторе есть кнопка с именем sqrt. - person Andreas Rejbrand; 27.06.2013