Как исправить ошибки при компиляции в Lazarus?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Анна Бак
новенький
Сообщения: 13
Зарегистрирован: 11.02.2014 13:23:09

Как исправить ошибки при компиляции в Lazarus?

Сообщение Анна Бак »

В учебнике Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. - Free Pascal и Lazarus(2010), есть такой пример программы:

Код: Выделить всё

var i,N:integer; max,X: real; S: string;begin
//Ввод количества элементов последовательности.
S:=InputBox ('Ввод',
'Введите_количество_элементов_в_последовательности. ','0');
N:=StrToFloat(S);
//Ввод первого элемента последовательности.
S:=InputBox ('Ввод_элементов_последовательности',
'Введите_число.','0');
X:=StrToFloat(S);
//Предположим, что первый элемент максимальный - Max=X.
max:=X;
//Параметр цикла принимает стартовое значение i=2,
//т.к. первый элемент уже введён.
for i:=2 to N do
begin
//Ввод следующих элементов последовательности.
S:=InputBox ('Ввод_элементов_последовательности',
'Введите_число.','0');
X:=StrToInt(S);
//Если найдётся элемент, превышающий максимум,
//записать его в ячейку Max -
//теперь он предполагаемый максимум.
if X>max then max:=X;
end;
//Ввыод наибольшего элемента последовательности.
MessageDlg (’Значение_наибольшего_элемента_-_’
+FloatToStr(max),MtInformation,[mbOk],0);
end;

Но при компиляции выходит такое сообщение:
unit1.pas(36,4) Error: Wrong number of parameters specified for call to "InputBox"
messagedialogs.inc(249,10) Hint: Found declaration: InputBox(const AnsiString,const AnsiString,const AnsiString):AnsiString;
unit1.pas(38,4) Error: Incompatible types: got "Double" expected "LongInt"
Подскажите как исправить ошибки?
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

Анна Бак писал(а):unit1.pas(38,4) Error: Incompatible types: got "Double" expected "LongInt"


Написано же, где именно и что. То есть, результат функции, возвращающей LongInt, присваивается переменной типа Double. Алсо, это как бы ненавязчиво намекает, что давным-давно нет больше такого типа как Real.
Как устранить? Гм, по тексту выше совершенно правильное выражение X:=StrToFloat(S);

и вместо N:=StrToFloat(S) должно быть N:=StrToInt(S);

Анна Бак писал(а):unit1.pas(36,4) Error: Wrong number of parameters specified for call to "InputBox"


Насколько могу судить по приведенному фрагменту, вы совершенно беспорядочно используете разные знаки апострофов для ограничения текстовых констант.
Значки ' ` " и встречающийся у вас в тексте уникодный косой апостроф - это не равноценные заменители друг другу. Сказано - прямой апостроф - то что расположено на русской букве "э" - значит он, а не что то другое.
Анна Бак
новенький
Сообщения: 13
Зарегистрирован: 11.02.2014 13:23:09

Сообщение Анна Бак »

Благодарю за помощь!!!! :D
Ответить