Syntax error identifier expected but function found

Syntax error identifier expected but function found Анна Бак » 27.10.2014 17:40:51 Re: Ошибка в коде программы! Дож » 27.10.2014 18:07:56 Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни. Вместо короткого тире − должен знак минус -,вместо обратной кавычки ’ — знак апострофа ‘. Re: Ошибка в коде программы! […]

Содержание

  1. Syntax error identifier expected but function found
  2. Re: Ошибка в коде программы!
  3. Re: Ошибка в коде программы!
  4. Re: Ошибка в коде программы!
  5. Re: Ошибка в коде программы!
  6. Re: Ошибка в коде программы!
  7. Re: Ошибка в коде программы!
  8. Re: Ошибка в коде программы!
  9. Описание сообщений об ошибках компилятора скрипт движка
  10. Перечень наиболее встречающихся сообщений класса Error (для поиска нужной Вам ошибки используйте Ctrl+F.):
  11. Рассмотрим также некоторые сообщения классов warning и hint.
  12. Несколько рекомендаций:
  13. Диагностические сообщения компилятора Delphi
  14. Несколько рекомендаций

Syntax error identifier expected but function found

Анна Бак » 27.10.2014 17:40:51

Re: Ошибка в коде программы!

Дож » 27.10.2014 18:07:56

Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 20:02:42

Дож писал(а): Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Я отсканировала текст только для того, чтобы задать вопрос.
А в Free Pascal вводила все в ручную и все знаки переписывала уже несколько раз, ничего не помогает.

Re: Ошибка в коде программы!

Little_Roo » 27.10.2014 20:40:10

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 21:35:18

Re: Ошибка в коде программы!

Little_Roo » 27.10.2014 21:38:27

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 22:11:59

Re: Ошибка в коде программы!

Дож » 27.10.2014 23:28:21

Дож писал(а): Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Я отсканировала текст только для того, чтобы задать вопрос.
А в Free Pascal вводила все в ручную и все знаки переписывала уже несколько раз, ничего не помогает.

Источник

Описание сообщений об ошибках компилятора скрипт движка

Часто бывает так, что скрипт не хочет компилироваться и компилятор выдает какую-то ошибку. В этой статье даны пояснения наиболее распространенным ошибкам компилятора Adrenaline Bot.

Перечень наиболее встречающихся сообщений класса Error (для поиска нужной Вам ошибки используйте Ctrl+F.):

0. expected but found . Обычно это сообщение возникает при синтаксической ошибке.Например,в случае не баланса скобок,компилятор сообщит: ‘)’ expected but ‘;’ found (вместо ожидавшейся скобки найдена запятая).
Компилятор часто сообщает, что ‘end’ ожидается, например: x:= 5,7; здесь неуместен разделитель-запятая, а сообщается про end. (‘END’ expected but ‘,’ found)

1. is not a type identifier . Данное не является именем типа.

2. ‘;’ not allowed before ‘Else’ . Перед else нельзя ставить точку с запятой

3. Abstract method must be virtual or dynamic . Абстрактный метод должен быть виртуальным или динамическим.

4. Ambiguous overloaded call to . Компилятор не может однозначно выбрать перегружаемый блок. Измените параметр.

5. Array type required . Ошибка возникает в случаях, когда в индексе элемента массива указано больше уровней, чем предусмотрено описанием, и если массив не описан. Например, после объявления двумерного массива х или простой переменной х ошибочно записывают элемент х[2,1,1] (в нем показано три измерения).

6. Assignment to FOR-loop variable . Присваивание значения параметру FOR-цикла в теле цикла.
Например, вследствие описки дважды используется имя i в кратном цикле:
For i:= 1 to n do For i:= 1 to m do .

7. Break or Continue outside of loop . Break или Continue — не в цикле.

8. Cannot initialize local variables . Локальные переменные запрещено инициализировать (задавать им значения при описании).

9. Cannot assign to/read a read-only/write-only property . Присвоение значения свойству read/only и чтение свойства write/only запрещены.

10. Constant expression expected . В этом месте должна стоять константа или константное выражение, например константа выбора в структуре Case.

11. Constant expression violates subrange bounds . Выход значения константы из диапазона. Контроль не полон. Например, «сойдет с рук» присваивание x:=3000000000, где х имеет тип integer, но значение х будет искажено.

12. Constant or type identifier expected . Требуется имя типа или тип-диапазон.

13. Could not compile used unit . Компиляция присоединенного модуля невозможна.

14. Data type too large . Тип определяет структуру размером более 2 Гбайт; это слишком много.

15. Declaration expected but found . Пропущено описание или оператор.

16. Declaration of differs from previous declarations . Данный заголовок блока не соответствует упреждающему объявлению блока.

17. Default parameter must be by-value or constant . Необязательный параметр (со значением по умолчанию) не должен вызываться по ссылке.

18. Expression expected . В этом месте программы должно стоять выражение.

19. Expression too complicated . Выражение излишне сложно для компиляции.

20. File type not allowed here . В этом месте или в этой роли файловую переменную нельзя использовать. Например, она не может быть формальным параметром-значением.

21. For loop control variable must be simple local variable . Параметр цикла должен быть простой локальной (описанной в этом же блоке) переменной.

22. For loop control variable must have ordinal type . Параметр цикла должен иметь порядковый тип. Вещественный тип запрещен.

23. Function needs result type . В заголовке функции надо указывать тип ее результата.

24. Identifier expected but found . В этом месте должно стоять имя. Например, пропущено имя
функции после Function.

25. Identifier redeclared . описано повторно, но в пределах блока имя можно описать лишь раз. Проверьте, не обозначена ли локальная переменная тем же именем, что и формальный параметр блока.

26. Illegal character in input file . Запретный знак, например «русская» буква, либо вы оставили скобку >, убрав открывающую скобку <.

27. Illegal type in Read/Readln (Write/Writeln) statement . Элемент запрещенного типа в списке ввода/вывода.

28. Incompatible types . Несоответствие типов по присваиванию или типов операндов одной операции. Сообщение выдается и при неверном использовании структур. Например, z — запись, ошибочно записано присваивание z:= 0 (работать надо с полями записи).

29. Invalid function result type . Недопустимый тип результата функции.

30. Label already defined: . уже помечает другой оператор.

31. Left side cannot be assigned to . He может быть такой левой части в присваивании. Примеры: попытка присвоить значение файловой переменной, присвоение значения формальному параметру-константе.

32. Line too long . В строке программного текста больше 255 знаков.

33. Low bound exceeds high bound . Нижняя граница превышает верхнюю.

34. Missing operator or semicolon .Пропуск операции (например перед скобкой) или пропуск точки с запятой. При пропуске ‘;’ маркер ошибки стоит на очередном предложении (объявлении или операторе).

35. Missing parameter type . He указан тип формального параметра-значения или параметра процедурного типа.

36. Not enough actual parameters . He хватает фактических параметров.

37. Need to specify at least one dimension . Нужно задавать в операторе SetLength хотя бы один размер динамического массива.

38. Number of elements differs from declaration . Число элементов в структурной константе не соответствует ее описанию.

39. Operator not applicable to this operand type . Операция не применима к операндам данного типа. Например: ‘А’ or ‘В’; ‘Text1’* ‘Text2’.

40. Order of fields in record constant differs from declaration . Порядок полей в записи-константе не соответствует описанию записи.

41. Ordinal type required . Требуется порядковый тип (например, в индексе).

42. Out of memory . Компилятору не хватает памяти.

43. Statement expected but found . В этом месте должен стоять оператор. Сообщение выдается во всех случаях, когда в тело блока или секцию инициализации ошибочно помещают описание ( ). Ошибочная форма обращения к процедуре Procedure или к функции Function также вызывает сообщение.

44. Sets may have at most 256 elements . Множество (тип Set) не может содержать более 256 элементов.

45. Slice standard function only allowed as open array argument . Функцию Slice можно использовать лишь как фактический параметр

46. Statement not allowed in interface part . Предложения в секции интерфейса программного модуля недопустимы.

47. Syntax error in real number . Синтаксическая ошибка в записи числа вещественного типа.

48. There is no overload version of that can be called with these arguments .Не предусмотрен перегружаемый блок , который мог бы вызываться с таким аргументом. Пример: IntToStr(x), где х – выражение вещественного типа.

49. Too many actual parameters . Фактических параметров больше, чем формальных.

50. Type actual and formal var parameters must be identical . Тип фактического параметра должен быть идентичен типу
формального параметра-переменной.

51. Type of expression must be . Выражение должно быть указанного типа. Например,после While и Until должно стоять логическое выражение.

52. Undeclared identifier: . Не описано . Проверьте есть ли описание в нужном месте,нет ли опечаток в имени. Если указано имя компонента формы, проверьте,поместили ли компонент на данную форму.

53. Unexpected end of file in comment started on line . Неожиданный конец файла при незавершенном комментарии, начало комментария — в строке N.

54. Unit name mismatch: . Имя модуля ошибочно.

55. Unsatisfied forward or external declaration . Отсутствует описание блока, объявление которого было дано (заголовок в интерфейсе или в описании объектного типа, либо упреждающее описание).

56. Unterminate string . He закрыта апострофом строка-константа типа string.

Рассмотрим также некоторые сообщения классов warning и hint.

1. Return value of function might be undefined . В теле функции нет присваивания ее результата.

2. Variable might not have been initialized . Указывает имя переменной, которой не задали значения.

3. For-Loop variable may be undefined after loop . Попытка использования значения параметра For-цикла после завершения этого цикла.

4. Text after final ‘END.’ ignored by compiler . Текст, идущий за конечной строкой модуля, игнорируется компилятором.

5. Variable is declared but never used in . Обращает внимание на переменную , описанную,но не нашедшую применения.

6. Value assigned to never used . Хотя бы одно значение переменной никак не использовано.

Несколько рекомендаций:

Не удаляйте прежний вариант кода,пока не убедитесь,что ошибка устранена. Лучше на время закомментировать код,заключив его в скобки:

Компилятор не анализирует, как будет выполняться программа, поэтому выход значения индекса из диапазона выявляет только если индекс задан константным выражением. Деление на ноль вообще пропускается, кроме оператора div, в случае если делитель — константное выражение.

Источник

Диагностические сообщения компилятора Delphi

Типов сообщений компилятора — более двухсот. Рассмотрим перечень наиболее встречающихся сообщений класса Error

    0. expected but found. Обычно это сообщение возникает при синтаксической ошибке.Например,в случае небаланса скобок,компилятор сообщит: ‘)’ expected but ‘;’ found (вместо ожидавшейся скобки найдена запятая).

Компилятор часто сообщает, что ‘end’ ожидается,например:x:= 5,7; здесь неуместен разделитель-запятая, а сообщается про end. (‘END’ expected but ‘,’ found)

  • 1. is not a type identifier. Данное не является именем типа.
  • 2. ‘;’ not allowed before ‘Else’. Перед else нельзя ставить точку с запятой
  • 3. Abstract method must be virtual or dynamic. Абстрактный метод должен быть виртуальным или динамическим.
  • 4. Ambiguous overloaded call to . Компилятор не может однозначно выбрать перегружаемый блок. Измените параметр.
  • 5. Array type required. Ошибка возникает в случаях, когда в индексе элемента массива указано больше уровней, чем предусмотрено описанием, и если массив не описан. Например, после объявления двумерного массива х или простой переменной х ошибочно записывают элемент х[2,1,1] (в нем показано три измерения).
  • 6. Assignment to FOR-loop variable . Присваивание значения параметру FOR-цикла в теле цикла.

    Например, вследствие описки дважды используется имя i в кратном цикле:

  • 7. Break or Continue outside of loop. Break или Continue — не в цикле.
  • 8. Cannot initialize local variables. Локальные переменные запрещено инициализировать (задавать им значения при описании).
  • 9. Cannot assign to/read a read-only/write-only property. Присвоение значения свойству read/only и чтение свойства write/only запрещены.
  • 10. Constant expression expected.В этом месте должна стоять константа или константное выражение, например константа выбора в структуре Case.
  • 11. Constant expression violates subrange bounds. Выход значения константы из диапазона. Контроль не полон. Например, «сойдет с рук» присваивание x:=3000000000, где х имеет тип integer, но начение х будет искажено.
  • 12. Constant or type identifier expected. Требуется имя типа или тип-диапазон.
  • 13. Could not compile used unit . Компиляция присоединенного модуля невозможна.
  • 14. Data type too large. Тип определяет структуру размером более 2 Гбайт; это слишком много.
  • 15. Declaration expected but found. Пропущено описание или оператор.
  • 16. Declaration of differs from previous declarations. Данный заголовок блока не соответствует упреждающему объявлению блока.
  • 17. Default parameter must be by-value or constant. Необязательный параметр (со значением по умолчанию) не должен вызываться по ссылке.
  • 18. Expression expected. В этом месте программы должно стоять выражение.
  • 19. Expression too complicated. Выражение излишне сложно для компиляции.
  • 20. File type not allowed here. В этом месте или в этой роли файловую переменную нельзя использовать. Например, она не может быть формальным параметром-значением.
  • 21. For loop control variable must be simple local variable. Параметр цикла должен быть простой локальной (описанной в этом же блоке) переменной.
  • 22. For loop control variable must have ordinal type. Параметр цикла должен иметь порядковый тип.Вещественный тип запрещен.
  • 23. Function needs result type. В заголовке функции надо указывать тип ее результата.
  • 24. Identifier expected but found. В этом месте должно стоять имя. Например, пропущено имя функции после Function.
  • 25. Identifier redeclared . описано повторно, но в пределах блока имя можно описать лишь раз. Проверьте, не обозначена ли локальная переменная тем же именем, что и формальный параметр блока.
  • 26. Illegal character in input file . Запретный знак, например «русская» буква, либо вы оставили скобку >, убрав открывающую скобку <.
  • 27. Illegal type in Read/Readln (Write/Writeln) statement. Элемент запрещенного типа в списке ввода/вывода.
  • 28. Incompatible types . Несоответствие типов по присваиванию или типов операндов одной операции. Сообщение выдается и при неверном использовании структур. Например, z — запись, ошибочно записано присваивание z:= 0 (работать надо с полями записи).
  • 29. Invalid function result type. Недопустимый тип результата функции.
  • 30. Label already defined: . уже помечает другой оператор.
  • 31. Left side cannot be assigned to. He может быть такой левой части в присваивании. Примеры: попытка присвоить значение файловой переменной, присвоение значения формальному параметру-константе.
  • 32. Line too long. В строке программного текста больше 255 знаков.
  • 33. Low bound exceeds high bound. Нижняя граница превышает верхнюю.
  • 34. Missing operator or semicolon.Пропуск операции (например перед скобкой) или пропуск точки с запятой. При пропуске ‘;’ маркер ошибки стоит на очередном предложении (объявлении или операторе).
  • 35. Missing parameter type. He указан тип формального параметра-значения или параметра процедурного типа.
  • 36. Not enough actual parameters. He хватает фактических параметров.
  • 37. Need to specify at least one dimension . Нужно задавать в операторе SetLength хотя бы один размер динамического массива.
  • 38. Number of elements differs from declaration. Число элементов в структурной константе не соответствует ее описанию.
  • 39. Operator not applicable to this operand type. Операция не применима к операндам данного типа. Например: ‘А’ or ‘В’; ‘Text1’* ‘Text2’.
  • 40. Order of fields in record constant differs from declaration. Порядок полей в записи-константе не соответствует описанию записи.
  • 41. Ordinal type required. Требуется порядковый тип (например, в индексе).
  • 42. Out of memory. Компилятору не хватает памяти.
  • 43. Statement expected but found. В этом месте должен стоять оператор. Сообщение выдается во всех случаях, когда в тело блока или секцию инициализации ошибочно помещают описание ( ). Ошибочная форма обращения к процедуре Procedure или к функции Function также вызывает сообщение.
  • 44. Sets may have at most 256 elements. Множество (тип Set) не может содержать более 256 элементов.
  • 45. Slice standard function only allowed as open array argument. Функцию Slice можно использовать лишь как фактический параметр
  • 46. Statement not allowed in interface part. Предложения в секции интерфейса программного модуля недопустимы.
  • 47. Syntax error in real number. Синтаксическая ошибка в записи числа вещственного типа.
  • 48. There is no overload version of that can be called with these arguments.Не предусмотрен перегружаемый блок , который мог бы вызываться с таким аргументом. Пример: IntToStr(x), где х – выражение вещественного типа.
  • 49. Too many actual parameters. Фактических параметров больше, чем формальных.
  • 50. Type actual and formal var parameters must be identical. Тип фактического параметра должен быть идентичен типу формального параметра-переменной.
  • 51. Type of expression must be . Выражение должно быть указанного типа. Например,после While и Until должно стоять логическое выражение.
  • 52. Undeclared identifier: .Не описано . Проверьте есть ли описание в нужном месте,нет ли описок в имени. Если указано имя компонента формы, проверьте,поместили ли компонент на данную форму.
  • 53. Unexpected end of file in comment started on line . Неожиданный конец файла при незавершенном комментарии, начало комментария — в строке N.
  • 54. Unit name mismatch: . Имя модуля ошибочно.
  • 55. Unsatisfied forward or external declaration . Отсутствует описание блока, объявление которого было дано (заголовок в интерфейсе или в описании объектного типа, либо упреждающее описание).
  • 56. Unterminate string. He закрыта апострофом строка-константа типа string.
  • Рассмотрим также некоторые сообщения классов warning и hint.

    • Return value of function might be undefined. В теле функции нет присваивания ее результата.
    • Variable might not have been initialized. Указывает имя переменой, которой не задали значения.
    • For-Loop variable may be undefined after loop. Попытка использования значения параметра For-цикла после завершения этого цикла.
    • Text after final ‘END.’ ignored by compiler. Текст, идущий за конечной строкой модуля, игнорируется компилятором.
    • Variable is declared but never used in . Обращает внимание на переменную , описанную,но не нашедшую применения.
    • Value assigned to never used. Хотя бы одно значение переменной никак не использовано.

    Несколько рекомендаций

    Сосредотачивайтесь на первом сообщении компилятора. Исправление хотя бы одной ошибки и повторная компиляция может значительно уменьшить число сообщений об ошибках,поэтому не упорствуйте, стремясь понять сразу причину каждого сообщения.

    Не удаляйте прежний вариант кода,пока не убедитесь,что ошибка устранена. Лучше на время закомментировать код,заключив его в скобки:

    Компилятор не анализирует, как будет выполняться программа, поэтому выход значения индекса из диапазона выявляет только если индекс задан константным выражением. Деление на ноль вообще пропускается, кроме оператора div, в случае если делитель — константное выражение.

    Источник

    stkapler

    0 / 0 / 0

    Регистрация: 07.02.2018

    Сообщений: 19

    1

    07.02.2018, 04:52. Показов 22776. Ответов 14

    Метки delphi, lazarus, pascal (Все метки)


    звучит задание: создай программу, в которой можно преподнести введенное пользователем число к указанному степеню.

    покапавшись на всяких форумах и тп, написал код. вроде бы все ок. но при компиляции выдает ошибку в 41 строке unit1.pas(42,17) Fatal: Syntax error, «;» expected but «.» found

    ниже код:

    Delphi
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        E1: TEdit;
        E2: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      Form1: TForm1;
      x, n, y: extended;
     
    implementation
                  function Power(const Base, Exponent: Extended): Extended;
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin;
       x:=strtofloat(e1.text);
       n:=strtofloat(e2.text);
       y:=Power(n, x);
       label2.caption:=floattostrf(s, ffFixed, 5,2);
    end;
     
    end.

    ps. уже сам нашел несколько ошибок, но все равно проблема осталась

    Добавлено через 8 минут
    *СТРОКА 37, А НЕ 41

    __________________
    Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



    0



    Programming

    Эксперт

    94731 / 64177 / 26122

    Регистрация: 12.04.2006

    Сообщений: 116,782

    07.02.2018, 04:52

    Ответы с готовыми решениями:

    Ошибка «project1.lpr(35,0) Fatal: Syntax error, «BEGIN» expected but «end of file» found»
    type
    tarray= array of integer;
    var
    a:tarray;
    m,s,k:integer;
    procedure…

    Ошибка: project1.lpr(1,1) Fatal: Syntax error, «BEGIN» expected but «end of file» found
    project1.lpr(1,1) Fatal: Syntax error, &quot;BEGIN&quot; expected but &quot;end of file&quot; found
    выдает эту ошибку…

    Ошибка: Fatal: Syntax error, «;» expected but «identifier Mas» found.
    Где здесь синтаксическая ошибка( &quot;mas:=A2;&quot; )?

    procedure TForm1.Button1Click(Sender: TObject);

    Ошибка Fatal: Syntax error, «;» expected but «is» found
    Не могу нигде прописать часть кода вот эт type tproc = procedure is…

    14

    Джоуи

    1073 / 635 / 240

    Регистрация: 05.05.2015

    Сообщений: 3,546

    Записей в блоге: 2

    07.02.2018, 05:48

    2

    Цитата
    Сообщение от stkapler
    Посмотреть сообщение

    implementation function Power(const Base, Exponent: Extended): Extended;

    Директива implementation означает раздел реализации, а не описания. Вы не реализовали функцию Power, а просто ее описали (нету begin end). Кстати, переименуйте как-нибудь, а то функция Power уже есть в паскале



    0



    Модератор

    8255 / 5477 / 2249

    Регистрация: 21.01.2014

    Сообщений: 23,578

    Записей в блоге: 3

    07.02.2018, 06:04

    3

    Цитата
    Сообщение от stkapler
    Посмотреть сообщение

    НЕ ЗНАЮ ЧТО ДЕЛАТЬ!

     Комментарий модератора 
    1. Создавать темы в нужном разделе
    2. Создавать темы с осмысленным названием
    3. Не дублировать свои темы!!!

    Это официальное предупреждение: Ваши действия — это нарушение правил форума, а именно пп 4.2, 5.4 и 5.5

    3. В секции uses подключить модуль Math
    4. Удалить к чертовой матери строку 32
    5. В строке 42 заменить переменную внутри FloatToStr(…) Вы присвоили результат возведения в степень в переменную Y, а там у Вас какая-то, не пойми откуда взявшаяся, S…



    0



    stkapler

    0 / 0 / 0

    Регистрация: 07.02.2018

    Сообщений: 19

    07.02.2018, 12:22

     [ТС]

    4

    сделал все как вы сказали
    но теперь выдает ошибку в сроке 39 и 40

    unit1.pas(39,25) Error: Incompatible type for arg no. 1: Got «TTranslateString», expected «Int64»

    unit1.pas(39,25) Error: Incompatible type for arg no. 1: Got «TTranslateString», expected «Int64»

    сами строки

    Pascal
    1
    2
    
       x:=FloatToStr(E1.Text);
       n:=FloatToStr(E2.Text);

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



    0



    Модератор

    8255 / 5477 / 2249

    Регистрация: 21.01.2014

    Сообщений: 23,578

    Записей в блоге: 3

    07.02.2018, 12:35

    5

    stkapler, Вы строку переводите в число, поэтому функция StrToFloat()

    Добавлено через 7 минут
    В стартовом посте все правильно ведь было написано!



    0



    0 / 0 / 0

    Регистрация: 07.02.2018

    Сообщений: 19

    07.02.2018, 12:36

     [ТС]

    6

    все хорошо, спасибо! проект компилируется и запускается

    НО!! при вводе чисел и после нажатия кнопки — ничего не происходит. а должен быть результат

    visible включен. шрифт норм, цвет отличный от фона. ничего не понимаю



    0



    Модератор

    8255 / 5477 / 2249

    Регистрация: 21.01.2014

    Сообщений: 23,578

    Записей в блоге: 3

    07.02.2018, 12:41

    7

    А Вы этот обработчик создавали, или так просто написали?



    0



    0 / 0 / 0

    Регистрация: 07.02.2018

    Сообщений: 19

    07.02.2018, 12:43

     [ТС]

    8

    нет, не создавал
    но в планах для красивого оформления программы это есть
    но сейчас просто функционал кода
    и результат не отображается



    0



    Модератор

    8255 / 5477 / 2249

    Регистрация: 21.01.2014

    Сообщений: 23,578

    Записей в блоге: 3

    07.02.2018, 14:48

    9

    Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

    Решение

    Не по теме:

    Цитата
    Сообщение от D1973
    Посмотреть сообщение

    А Вы этот обработчик создавали

    Цитата
    Сообщение от stkapler
    Посмотреть сообщение

    нет, не создавал но в планах для красивого оформления программы это есть

    :scratch:

    stkapler, возьмите любую книжку по самым-самым азам создания программ в среде Delphi/Lazarus и обязательно прочтите ее… Ну или программирование бросайте прямо сейчас…
    Все, что от Вас требовалось — это положить на форму кнопку, сделать на этой кнопке двойной клик и в получившейся заготовке обработчика события написать код.



    0



    0 / 0 / 0

    Регистрация: 07.02.2018

    Сообщений: 19

    07.02.2018, 19:11

     [ТС]

    10

    спасибо, теперь все ок!
    мне тут пол года учиться осталось, до сдам эти проекты — и буду гулять
    вообще не пойму, зачем в 2018 дают учить паскаль
    но за помощь — огромное спасибо!



    0



    Hretgir

    07.02.2018, 20:01

    Не по теме:

    Цитата
    Сообщение от stkapler
    Посмотреть сообщение

    зачем в 2018 дают учить паскаль

    действительно, ребята учатся на начальников Била Гейтса, а их Паскаль учить заставляют, маразм да и только.



    0



    0 / 0 / 0

    Регистрация: 07.02.2018

    Сообщений: 19

    07.02.2018, 20:08

     [ТС]

    12

    орнул. ну считайте что у меня узкое мировоззрение, ваше право
    но смысла в этом я действительно не вижу. мое мнение и никому его не прививаю



    0



    Hretgir

    07.02.2018, 20:37

    Не по теме:

    а что-бы вы хотели учить в 2018? просто интересно…
    вот я-бы хотел учить нейросети, а получается что по факту мне нужен паскаль, на настоящий момент.
    хотя можете не отвечать, я только мешаю.



    0



    stkapler

    07.02.2018, 20:58

     [ТС]

    Не по теме:

    я себе сейчас спокойно учу видеомонтаж в свое свободное время, но учить паскаль — навязывает школьная программа



    0



    Cyborg Drone

    08.02.2018, 09:25


        Ошибка «Fatal: Syntax error, «;» expected but «.» found»

    Не по теме:

    Да не спорьте. Не нужно знать язык программирования — значит, не нужно. Личное дело каждого. С другой стороны, те, кто всерьёз занимается программированием, как правило, знает несколько языков программирования, и выучить ещё один, как правило, никакая не проблема.



    0



    IT_Exp

    Эксперт

    87844 / 49110 / 22898

    Регистрация: 17.06.2006

    Сообщений: 92,604

    08.02.2018, 09:25

    Fatal: Syntax error, «BEGIN» expected but «end of file» found
    Доброго времени суток! Вот простой код, который, по идее, находит корни квадратного уравнения….

    Unit1.pas(41,5) Fatal: Syntax error, «;» expected but «identifier Y» found
    Привет всем.Сделал программу,вроде как должна работать,не пойму в чем проблема(программа вся…

    Fatal: Syntax error, «BEGIN» expected but «identifier BITMAP» found
    Добрый день! пишу программу по методичке, выдает вот такие ошибки:
    unit1.pas(78,1) Fatal: Syntax…

    Unit1.pas(66,4) Fatal: Syntax error, «;» expected but «.» found
    unit Unit1;

    {$mode objfpc}{$H+}

    interface

    uses
    Classes, SysUtils, FileUtil, Forms,…

    Искать еще темы с ответами

    Или воспользуйтесь поиском по форуму:

    15

    Topic: Syntax error, «.» expected but «identifier I» found  (Read 16242 times)

    hello everyone,

    i learned pascal years ago, now a friend of mine asked me to help them with some problem, so i’m not very familiar with pascal’s errors, i’ve fixed a few but can’t figure out this one. i’m using an online compiler, and i get this error: Syntax error, «.» expected but «identifier I» found

    here’s the code (getting the error on line 18):

    1. program p;

    2. var a,n,i,j,k : integer;

    3. var x : array[1..50] of integer;

    4. begin

    5. write(‘a = ‘);

    6. read(a);

    7. write(‘n = ‘);

    8. read(n);

    9.     k:=1;

    10.     i:=a;

    11. while(k<=n) do

    12. for j:=2 to trunc(i/2) do

    13. if (i mod j <> 0) then begin

    14.                 x[k]:= i;

    15.                 k:=k+1;

    16. end

    17. end

    18.         i:=i+1;

    19. end

    20. for i:=1 to k do writeln(x[k]);

    21. end.

    « Last Edit: November 15, 2016, 08:00:45 am by user4592357 »


    Logged


    Hi user4592357,

    Try this:

    1. program p;

    2. var a,n,i,j,k : integer;

    3. var x : array[1..50] of integer;

    4. begin

    5. write(‘a = ‘);

    6. read(a);

    7. write(‘n = ‘);

    8. read(n);

    9.     k:=1;

    10.     i:=a;

    11. while(k<=n) do begin

    12. for j:=2 to trunc(i/2) do begin

    13. if (i mod j <> 0) then begin

    14.                 x[k]:= i;

    15.                 k:=k+1;

    16. end;

    17. end;

    18.         i:=i+1;

    19. end;

    20. for i:=1 to k do writeln(x[k]);

    21. end.


    Logged


    You need the semicolon after the «end»s.
    I think the only exception is when it’s «end else»… http://wiki.freepascal.org/Else


    Logged

    Getting back into programming after 8+ years.


    You need the semicolon after the «end»s.
    I think the only exception is when it’s «end else»… http://wiki.freepascal.org/Else

    No, end end end … <at infinitum minus 1> is legal, provided the last end; has a terminating ; and there is really no code at all in between the end’s.

    1. {%NORUN}

    2. program untitled;

    3. uses initc;

    4. begin

    5. while true do

    6. begin

    7. while true do

    8. begin

    9. while true do

    10. begin

    11. end //<—

    12. end //<—

    13. end; //<—

    14. end.

    « Last Edit: November 15, 2016, 09:23:14 am by Thaddy »


    Logged

    «Looks» OK, doesn’t mean it is IS OK.


    You need the semicolon after the «end»s.
    I think the only exception is when it’s «end else»… http://wiki.freepascal.org/Else

    No, end end end … <at infinitum minus 1> is legal, provided the last end; has a terminating ; and there is really no code at all in between the end’s.

    Ah, learned something new today!  :)


    Logged

    Getting back into programming after 8+ years.


    Added example ;)


    Logged

    «Looks» OK, doesn’t mean it is IS OK.


    @Thaddy
    It might be legal but still ugly or confusing at least.  :)


    Logged


    yeah the semicolons were missing, and i learned that too :D thanks for the help


    Logged



    Logged

    «Looks» OK, doesn’t mean it is IS OK.


    yeah the semicolons were missing, and i learned that too :D thanks for the help

    Actually you miss only two semicolons in two of the ends, lines 17 and 19.  The other one (line 16) is the last statement of the block so it doesn’t need a semicolon.   You don’t need a semicolon before an END keyword.

    The way to understand is to read the Pascal BNF description.  The trick is at the StatementSequence production:

      StatementPart     = CompoundStatement .

      CompoundStatement = "begin" StatementSequence "end" .

      StatementSequence = Statement { ";" Statement } .

      Statement         = [ Label ":" ]
                          [   AssignmentOrCall
                            | CompoundStatement
                            | GotoStatement
                            | WhileStatement
                            | RepeatStatement
                            | IfStatement
                            | CaseStatement
                            | ForStatement
                            | WithStatement ] .

      AssignmentOrCall  = Designator ( ":=" Expression | [ ActualParams ] ) .

      WhileStatement    = "while" BooleanExpression "do" Statement .

      RepeatStatement   = "repeat" StatementSequence "until" BooleanExpression .

      IfStatement       = "if" BooleanExpression "then" Statement
                          [ "else" Statement ] .

      ForStatement      = "for" ControlVariable ":=" OrdinalExpression
                          ( "to" | "downto" ) OrdinalExpression "do" Statement .


    Semicolon is used to separate statements in a statement sequence, not to mark where a statement ends as used in C and derivatives.

    BASIC does the same, but using colon («:»). ;)

    [edit]
    I’ve found this other BNF-esque description. May be it’s more clear.

    « Last Edit: November 15, 2016, 11:46:03 am by Ñuño_Martínez »


    Logged


    Типов сообщений компилятора — более двухсот. Рассмотрим перечень наиболее встречающихся сообщений класса Error

    0.<Что-то1> expected but <Что-то2> found. Обычно это сообщение возникает при синтаксической ошибке.Например,в случае небаланса скобок,компилятор сообщит: ‘)’ expected but ‘;’ found (вместо ожидавшейся скобки найдена запятая).
    Компилятор часто сообщает, что ‘end’ ожидается,например:x:= 5,7; здесь неуместен разделитель-запятая, а сообщается про end. (‘END’ expected but ‘,’ found)

    1. <Имя> is not a type identifier. Данное <Имя> не является именем типа.

    2. ‘;’ not allowed before ‘Else’. Перед else нельзя ставить точку с запятой

    3. Abstract method must be virtual or dynamic. Абстрактный метод должен быть виртуальным или динамическим.

    4. Ambiguous overloaded call to <Имя блока>. Компилятор не может однозначно выбрать перегружаемый блок. Измените параметр.

    5. Array type required. Ошибка возникает в случаях, когда в индексе элемента массива указано больше уровней, чем предусмотрено описанием, и если массив не описан. Например, после объявления двумерного массива х или простой переменной х ошибочно записывают элемент х[2,1,1] (в нем показано три измерения).

    6. Assignment to FOR-loop variable <Имя>. Присваивание значения параметру FOR-цикла в теле цикла.
    Например, вследствие описки дважды используется имя i в кратном цикле:
    For i:= 1 to n do For i:= 1 to m do …

    7. Break or Continue outside of loop. Break или Continue — не в цикле.

    8. Cannot initialize local variables. Локальные переменные запрещено инициализировать (задавать им значения при описании).

    9. Cannot assign to/read a read-only/write-only property. Присвоение значения свойству read/only и чтение свойства write/only запрещены.

    10. Constant expression expected.В этом месте должна стоять константа или константное выражение, например константа выбора в структуре Case.

    11. Constant expression violates subrange bounds. Выход значения константы из диапазона. Контроль не полон. Например, «сойдет с рук» присваивание x:=3000000000, где х имеет тип integer, но начение х будет искажено.

    12. Constant or type identifier expected. Требуется имя типа или тип-диапазон.

    13. Could not compile used unit <Имя>. Компиляция присоединенного модуля <Имя> невозможна.

    14. Data type too large. Тип определяет структуру размером более 2 Гбайт; это слишком много.

    15. Declaration expected but <Что-то> found. Пропущено описание или оператор.

    16. Declaration of <Имя> differs from previous declarations… Данный заголовок блока не соответствует упреждающему объявлению блока.

    17. Default parameter <Имя> must be by-value or constant. Необязательный параметр (со значением по умолчанию) не должен вызываться по ссылке.

    18. Expression expected. В этом месте программы должно стоять выражение.

    19. Expression too complicated. Выражение излишне сложно для компиляции.

    20. File type not allowed here. В этом месте или в этой роли файловую переменную нельзя использовать.
    Например, она не может быть формальным параметром-значением.

    21. For loop control variable must be simple local variable. Параметр цикла должен быть простой локальной (описанной в этом же блоке) переменной.

    22. For loop control variable must have ordinal type. Параметр цикла должен иметь порядковый тип.Вещественный тип запрещен.

    23. Function needs result type. В заголовке функции надо указывать тип ее результата.

    24. Identifier expected but <Что-то> found. В этом месте должно стоять имя. Например, пропущено имя
    функции после Function.

    25. Identifier redeclared <Имя>.<Имя> описано повторно, но в пределах блока имя можно описать лишь раз. Проверьте, не обозначена ли локальная переменная тем же именем, что и формальный параметр блока.

    26. Illegal character in input file <знак>. Запретный знак, например «русская» буква, либо вы оставили скобку }, убрав открывающую скобку {.

    27. Illegal type in Read/Readln (Write/Writeln) statement. Элемент запрещенного типа в списке ввода/вывода.

    28. Incompatible types <указание типов>. Несоответствие типов по присваиванию или типов операндов одной операции. Сообщение выдается и при неверном использовании структур. Например, z — запись, ошибочно записано
    присваивание z:= 0 (работать надо с полями записи).

    29. Invalid function result type. Недопустимый тип результата функции.

    30. Label already defined: <Метка>. <Метка> уже помечает другой оператор.

    31. Left side cannot be assigned to. He может быть такой левой части в присваивании. Примеры: попытка присвоить значение файловой переменной, присвоение значения формальному параметру-константе.

    32. Line too long. В строке программного текста больше 255 знаков.

    33. Low bound exceeds high bound. Нижняя граница превышает верхнюю.

    34. Missing operator or semicolon.Пропуск операции (например перед скобкой) или пропуск точки с запятой. При пропуске ‘;’ маркер ошибки стоит на очередном предложении (объявлении или операторе).

    35. Missing parameter type. He указан тип формального параметра-значения или параметра процедурного типа.

    36. Not enough actual parameters. He хватает фактических параметров.

    37. Need to specify at least one dimension … Нужно задавать в операторе SetLength хотя бы один размер динамического массива.

    38. Number of elements differs from declaration. Число элементов в структурной константе не соответствует ее описанию.

    39. Operator not applicable to this operand type. Операция не применима к операндам данного типа. Например: ‘А’ or ‘В’; ‘Text1’* ‘Text2’.

    40. Order of fields in record constant differs from declaration. Порядок полей в записи-константе не соответствует описанию записи.

    41. Ordinal type required. Требуется порядковый тип (например, в индексе).

    42. Out of memory. Компилятору не хватает памяти.

    43. Statement expected but <Что-то> found. В этом месте должен стоять оператор. Сообщение выдается во всех случаях, когда в тело блока или секцию инициализации ошибочно помещают описание (<Что-то>). Ошибочная форма обращения к процедуре Procedure <Имя> или к функции Function <Имя> также вызывает сообщение.

    44. Sets may have at most 256 elements. Множество (тип Set) не может содержать более 256 элементов.

    45. Slice standard function only allowed as open array argument. Функцию Slice можно использовать лишь как фактический параметр

    46. Statement not allowed in interface part. Предложения в секции интерфейса программного модуля недопустимы.

    47. Syntax error in real number. Синтаксическая ошибка в записи числа вещственного типа.

    48. There is no overload version of <Имя> that can be called with these arguments.Не предусмотрен перегружаемый блок <Имя>, который мог бы вызываться с таким аргументом. Пример: IntToStr(x), где х – выражение вещественного типа.

    49. Too many actual parameters. Фактических параметров больше, чем формальных.

    50. Type actual and formal var parameters must be identical. Тип фактического параметра должен быть идентичен типу
    формального параметра-переменной.

    51. Type of expression must be <Тип>. Выражение должно быть указанного типа. Например,после While и Until должно стоять логическое выражение.

    52. Undeclared identifier: <Имя>.Не описано <Имя>. Проверьте есть ли описание в нужном месте,нет ли описок в имени. Если указано имя компонента формы, проверьте,поместили ли компонент на данную форму.

    53. Unexpected end of file in comment started on line <N>. Неожиданный конец файла
    при незавершенном комментарии, начало комментария — в строке N.

    54. Unit name mismatch: <Имя>. Имя модуля ошибочно.

    55. Unsatisfied forward or external declaration <Имя>. Отсутствует описание блока, объявление которого было дано (заголовок в интерфейсе или в описании объектного типа, либо упреждающее описание).

    56. Unterminate string. He закрыта апострофом строка-константа типа string.

    Рассмотрим также некоторые сообщения классов warning и hint.

    Сосредотачивайтесь на первом сообщении компилятора. Исправление хотя бы одной ошибки и повторная компиляция может значительно уменьшить число сообщений об ошибках,поэтому не упорствуйте, стремясь понять сразу причину каждого сообщения.

    Не удаляйте прежний вариант кода,пока не убедитесь,что ошибка устранена. Лучше на время закомментировать код,заключив его в скобки: { код }

    Компилятор не анализирует, как будет выполняться программа, поэтому выход значения индекса из диапазона выявляет только если индекс задан константным выражением. Деление на ноль вообще пропускается, кроме оператора div, в случае если делитель — константное выражение.

    Понравилась статья? Поделить с друзьями:
  • Syntax error gothic 3
  • Syntax error expected name found
  • Syntax error expected gthtdjl
  • Syntax error expected but identifier readln found
  • Syntax error expected but found перевод