Undeclared identifier delphi как исправить

Ошибка типа "Undeclared identifier" Delphi Решение и ответ на вопрос 1854442

Каныш2901

0 / 0 / 0

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

Сообщений: 16

1

19.11.2016, 11:12. Показов 23631. Ответов 5

Метки нет (Все метки)


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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, DBCtrls, jpeg, ExtCtrls, Menus, Buttons;
 
  const maxSymbols=10;
 
 
type
  TForm2 = class(TForm)
    img1: TImage;
    lbl1: TLabel;
    ds1: TDataSource;
    dbmmo1: TDBMemo;
    tbl1: TADOTable;
    mm1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    WordGroup: TGroupBox;
    Char1: TPanel;
    Char2: TPanel;
    Char3: TPanel;
    Char4: TPanel;
    Char5: TPanel;
    Char6: TPanel;
    Char7: TPanel;
    Char8: TPanel;
    Char9: TPanel;
    Char10: TPanel;
    BtnGroup: TGroupBox;
    BtnA: TSpeedButton;
    BtnB: TSpeedButton;
    BtnC: TSpeedButton;
    BtnG: TSpeedButton;
    BtnD: TSpeedButton;
    BtnH: TSpeedButton;
    BtnI: TSpeedButton;
    BtnE: TSpeedButton;
    BtnF: TSpeedButton;
    BtnJ: TSpeedButton;
    BtnK: TSpeedButton;
    BtnL: TSpeedButton;
    BtnM: TSpeedButton;
    BtnN: TSpeedButton;
    BtnO: TSpeedButton;
    BtnQ: TSpeedButton;
    BtnR: TSpeedButton;
    BtnS: TSpeedButton;
    BtnT: TSpeedButton;
    BtnP: TSpeedButton;
    BtnV: TSpeedButton;
    BtnW: TSpeedButton;
    BtnX: TSpeedButton;
    BtnU: TSpeedButton;
    BtnY: TSpeedButton;
    BtnZ: TSpeedButton;
    tEdit: TEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
 
  private
    { Private declarations }
     procedure TForm2btnEnableAll;
  public
    { Public declarations }
  end;
 
var
  Form2: TForm2;
 
implementation
 
uses Unit1;
 
{$R *.dfm}
 
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.show;
Form2.Hide;
end;
procedure TForm2btnEnableAll;
begin
 BtnA.Enabled:=true;
 BtnB.Enabled:=true;
 BtnC.Enabled:=true;
 end;
 
end.

Ошибка:
[Error] Unit2.pas(90): Undeclared identifier: ‘BtnA’
[Error] Unit2.pas(91): Undeclared identifier: ‘BtnB’
[Error] Unit2.pas(92): Undeclared identifier: ‘BtnC’

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



0



Nanotentacle

884 / 404 / 174

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

Сообщений: 1,828

19.11.2016, 11:16

2

Delphi
1
2
3
4
5
6
7
8
procedure TForm2btnEnableAll;
begin
 BtnA.Enabled:=true;
 BtnB.Enabled:=true;
 BtnC.Enabled:=true;
 end;
 
end.

Причина кроется в том, что у вас функция не принадлежит классу TForm2. Поэтому она и не знает, что это за btnA.
Правильно должно быть так:

Delphi
1
2
3
4
5
6
7
8
procedure TForm2.TForm2btnEnableAll;
begin
 BtnA.Enabled:=true;
 BtnB.Enabled:=true;
 BtnC.Enabled:=true;
 end;
 
end.

И специально чтобы избежать подобных ситуаций придумали сочетание клавиш Ctrl+Shift+C.



0



5443 / 4267 / 1375

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

Сообщений: 19,204

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

19.11.2016, 12:00

3

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



0



Каныш2901

0 / 0 / 0

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

Сообщений: 16

20.11.2016, 13:02

 [ТС]

4

Тоже самый код, но ошибка другая

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, DBCtrls, jpeg, ExtCtrls, Menus, Buttons;
 
  const maxSymbols=10;
 
 
type
  TForm2 = class(TForm)
    img1: TImage;
    lbl1: TLabel;
    ds1: TDataSource;
    dbmmo1: TDBMemo;
    tbl1: TADOTable;
    mm1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    WordGroup: TGroupBox;
    Char1: TPanel;
    Char2: TPanel;
    Char3: TPanel;
    Char4: TPanel;
    Char5: TPanel;
    Char6: TPanel;
    Char7: TPanel;
    Char8: TPanel;
    Char9: TPanel;
    Char10: TPanel;
    BtnGroup: TGroupBox;
    BtnA: TSpeedButton;
    BtnB: TSpeedButton;
    BtnC: TSpeedButton;
    BtnG: TSpeedButton;
    BtnD: TSpeedButton;
    BtnH: TSpeedButton;
    BtnI: TSpeedButton;
    BtnE: TSpeedButton;
    BtnF: TSpeedButton;
    BtnJ: TSpeedButton;
    BtnK: TSpeedButton;
    BtnL: TSpeedButton;
    BtnM: TSpeedButton;
    BtnN: TSpeedButton;
    BtnO: TSpeedButton;
    BtnQ: TSpeedButton;
    BtnR: TSpeedButton;
    BtnS: TSpeedButton;
    BtnT: TSpeedButton;
    BtnP: TSpeedButton;
    BtnV: TSpeedButton;
    BtnW: TSpeedButton;
    BtnX: TSpeedButton;
    BtnU: TSpeedButton;
    BtnY: TSpeedButton;
    BtnZ: TSpeedButton;
    tEdit: TEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BtnAClick(Sender: TObject);
 
  private
    { Private declarations }
    procedure TForm2btnEnableAll;
    procedure Tform2btnDisable(ch:char);
    procedure BtnClick(ch:char);
  public
    { Public declarations }
  end;
 
var
  Form2: TForm2;
 
implementation
 
uses Unit1;
 
{$R *.dfm}
var Buttons:set of 'A'..'Z';
 
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.show;
Form2.Hide;
end;
procedure TForm2.TForm2btnEnableAll;
begin
 BtnA.Enabled:=true;
 BtnB.Enabled:=true;
 BtnC.Enabled:=true;
 BtnD.Enabled:=true;
 BtnE.Enabled:=true;
 BtnF.Enabled:=true;
 BtnG.Enabled:=true;
 BtnH.Enabled:=true;
 BtnI.Enabled:=true;
 BtnJ.Enabled:=true;
 BtnK.Enabled:=true;
 BtnL.Enabled:=true;
 BtnM.Enabled:=true;
 BtnN.Enabled:=true;
 BtnO.Enabled:=true;
 BtnP.Enabled:=true;
 BtnQ.Enabled:=true;
 BtnR.Enabled:=true;
 BtnS.Enabled:=true;
 BtnT.Enabled:=true;
 BtnU.Enabled:=true;
 BtnV.Enabled:=true;
 BtnW.Enabled:=true;
 BtnX.Enabled:=true;
 BtnY.Enabled:=true;
 BtnZ.Enabled:=true;
 end;
 
 procedure TForm2.Tform2btnDisable(ch:char);
 var c:char;
begin c:=upcase(ch);
if not (c in ['A'..'Z']) then exit;
 if (c in ['A'..'Z']) then exit;
 case c of
 'A': BtnA.Enabled:=false;
 'B': BtnB.Enabled:=false;
 'C': BtnC.Enabled:=false;
 'D': BtnD.Enabled:=false;
 'E': BtnE.Enabled:=false;
 'F': BtnF.Enabled:=false;
 'G': BtnG.Enabled:=false;
 'H': BtnH.Enabled:=false;
 'I': BtnI.Enabled:=false;
 'J': BtnJ.Enabled:=false;
 'K': BtnK.Enabled:=false;
 'L': BtnL.Enabled:=false;
 'M': BtnM.Enabled:=false;
 'N': BtnN.Enabled:=false;
 'O': BtnO.Enabled:=false;
 'P': BtnP.Enabled:=false;
 'Q': BtnQ.Enabled:=false;
 'R': BtnR.Enabled:=false;
 'S': BtnS.Enabled:=false;
 'T': BtnT.Enabled:=false;
 'U': BtnU.Enabled:=false;
 'V': BtnV.Enabled:=false;
 'W': BtnW.Enabled:=false;
 'X': BtnX.Enabled:=false;
 'Y': BtnY.Enabled:=false;
 'Z': BtnZ.Enabled:=false;
 end;
end;
 
 
 
procedure TForm2.BtnAClick(Sender: TObject);
begin
BtnAClick('A');
end;
 
end.

[Error] Unit2.pas(161): Incompatible types: ‘TObject’ and ‘Char’



0



5443 / 4267 / 1375

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

Сообщений: 19,204

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

20.11.2016, 13:36

5

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

но ошибка тут

procedure TForm2.

BtnAClick(Sender: TObject);
begin
BtnAClick(‘A’);
end;

процедура вызывает сама себя. т.е. один раз нажал и через 1-5 сек вывалится Stack overflow
параметр описан как TObject
а передается ‘A’ — это очевидно char
так и написано в сообщении об ошибке



0



D1973

Модератор

8255 / 5477 / 2249

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

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

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

20.11.2016, 15:58

6

Каныш2901, жуть какая-то…

Delphi
1
2
3
4
5
6
7
procedure TForm2.TForm2btnEnableAll;
begin
 BtnA.Enabled:=true;
 BtnB.Enabled:=true;
 ...
 BtnZ.Enabled:=true;
end;

а вот так нельзя было сделать?

Delphi
1
2
3
4
5
6
procedure TForm2.TForm2btnEnableAll;
var i : integer;
begin
 for i := 0 to ControlCount - 1 do
  if Controls[i] is TSpeedButton then (Controls[i] as TSpeedButton).Enabled := false;
end;

Добавлено через 6 минут

Цитата
Сообщение от Каныш2901
Посмотреть сообщение

if not (c in [‘A’..’Z’]) then exit;
if (c in [‘A’..’Z’]) then exit;

Вот тоже шедевр: сами-то понимаете, какую чушь написали?
Перевожу:
1. Если с не входит в множество [‘A’ .. ‘Z’] тогда выходим.
2. Если с входит в множество [‘A’ .. ‘Z’] тогда выходим.
Вообще в чем сакральный смысл этой процедуры, если, независимо от того, входит с в это множество или нет — мы все равно тут же процедуру покидаем?

Добавлено через 7 минут
Еще один жутик…

Delphi
1
2
3
4
5
6
case c of
 'A': BtnA.Enabled:=false;
 'B': BtnB.Enabled:=false;
...
 'Z': BtnZ.Enabled:=false;
end;

Не по теме:

FindComponent? Не, не слыхали…

Delphi
1
2
3
4
5
var SB : TSpeedButton;
begin
 SB := FindComponent('Btn' + c) as TSpeedButton;
 SB.Enabled := false;
end;



0



    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.


    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как прочитать список файлов, поддиректорий в директории?
    5. Как запустить программу/файл?
    … (продолжение следует) …


    Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
    Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


    Внимание
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…

    >
    Undeclared identifier

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    05.07.10, 19:22

      Извините за такое название темы.

      Проблема заключается в следующем
      на все строки в которых встречается Appliction.Exename (или подобные Appliction…..) в Structure говорится Undeclared identifier см. рис.
      user posted image

      user posted image

      но при этом проект компилится и компилятор никаких ворнингов не выдает.
      Как избавится от этих надписей Undeclared identifier в Structure.

      ПС Delphi 2010


      andrew.virus



      Сообщ.
      #2

      ,
      05.07.10, 21:05

        VahaC, конечно я не провидец, но возможно вместо Appliction должно быть Application … ;)


        VahaC



        Сообщ.
        #3

        ,
        06.07.10, 00:16

          Цитата andrew.virus @ 05.07.10, 21:05

          но возможно вместо Appliction должно быть Application

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


          ZBugZ



          Сообщ.
          #4

          ,
          06.07.10, 04:39

            Full Member

            ***

            Рейтинг (т): 6

            У меня тоже самое :) Тока в коде проекта… Причем только у одного :blink: Просто создал проект, привентил юниты и все, пишет мол незнаю и не вижу и все работает… Раздражает красная подсветка….


            Anatoly Podgoretsky



            Сообщ.
            #5

            ,
            06.07.10, 06:51

              Так наверно в uses не указаны нужные модули.

              Master

              ViktorXP



              Сообщ.
              #6

              ,
              06.07.10, 08:29

                попробуй написать forms.Application.ExeName если проблема исчезнет то значит в каком то еще модуле объявлена одноименная переменная (было один раз подобная. модуль не мой. посему не знал что там есть подобная переменная)


                Frees



                Сообщ.
                #7

                ,
                06.07.10, 09:24

                  Цитата VahaC @ 05.07.10, 19:22

                  но при этом проект компилится и компилятор никаких ворнингов не выдает.

                  может глюк IDE, открыть закрыть Delphi не помогает


                  Domino



                  Сообщ.
                  #8

                  ,
                  06.07.10, 11:59

                    Цитата Frees @ 06.07.10, 09:24

                    может глюк IDE

                    Скорее всего. У меня в окне Structure вечно куча ошибок (в т.ч. и ‘Unknown class TObject’), хотя всё прекрасно компилируется и работает. Немного мешает подчёркивание красной волнистой линией в редакторе, но через некоторое время начинаю не обращать внимания.
                    D.2007


                    Felan



                    Сообщ.
                    #9

                    ,
                    06.07.10, 12:19

                      Да всю жизнь это дело в делфи глючило… И в D2010 тоже. Перезагрузишься — нормально. Через некоторое время опять.


                      CodeMonkey



                      Сообщ.
                      #10

                      ,
                      06.07.10, 12:26

                        А что, разве Structure хоть когда-то работало нормально, чтобы ожидать от него нормальной работы? :)


                        VahaC



                        Сообщ.
                        #11

                        ,
                        06.07.10, 15:48

                          Цитата ViktorXP @ 06.07.10, 08:29

                          попробуй написать forms.Application.ExeName если проблема исчезнет то значит в каком то еще модуле объявлена одноименная переменная

                          да вроде как раз оно после написания forms.Application.ExeName подчеркивание пропало


                          ZBugZ



                          Сообщ.
                          #12

                          ,
                          07.07.10, 05:34

                            Full Member

                            ***

                            Рейтинг (т): 6

                            А у меня даже на кнопку красным пищет :) Ну а там всякие перезагрузки и перезапуски не помогают. И главное только в одном проекте созданного с нуля :) Остальные нормально…

                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                            0 пользователей:

                            • Предыдущая тема
                            • Delphi: Общие вопросы
                            • Следующая тема

                            Рейтинг@Mail.ru

                            [ Script execution time: 0,0471 ]   [ 16 queries used ]   [ Generated: 10.02.23, 04:49 GMT ]  

                            E2003 Undeclared identifier ‘ShortDateFormat’ error in Delphi XE3 or later versions

                            E2003 Undeclared identifier ‘ShortDateFormat’ error in Delphi XE3  or later versions

                            When we upgrade a Delphi old version application to Delphi XE3 or latest one then if we have used ‘ShortDateFormat‘ global variable in our project then we will get ‘E2003 Undeclared identifier ‘ShortDateFormat’ compiler error.

                            Why we get this error?

                            As some global variables typically pertain to Date, Time and Currency format (CurrencyString, ShorDateFormat, LongTimeFormat, ShortMonthNames, and so on) have been deprecated and removed declaration from Delphi XE3 or later versions. In old Delphi versions we can find this variables declaration in ‘System.SysUtils’ unit but from Delphi XE3 those are moved with TFormatSettings Record.

                            Workarounds to solve this error.

                            We can replace ‘ShortDateFormat‘ with ‘Formatsettings.ShortDateFormat’. And ‘FormatSettings‘ is a global variable of ‘TFormatSettings’ type declared in ‘SysUtils‘ which having these variables.


                            Errors when we migrate a project from Delphi 7 to Delphi XE3


                            Undeclared identifier DecimalSeparator
                            Undeclared identifier CurrencyFormat
                            Undeclared identifier ThousandSeparator
                            Undeclared identifier DateSeparator
                            Undeclared identifier TimeSeparator
                            Undeclared identifier ShortDateFormat
                            Undeclared identifier LongDateFormat


                            Solution to above errors


                            Formatsettings.DecimalSeparator
                            Formatsettings.CurrencyFormat
                            Formatsettings.ThousandSeparator
                            Formatsettings.DateSeparator
                            Formatsettings.TimeSeparator
                            Formatsettings.ShortDateFormat
                            Formatsettings.LongDateFormat


                            Following are some other global variables also having same issue:

                            Global Variable
                            (System.SysUtils)
                            Corresponding
                            TFormatSettings Field  

                            CurrencyDecimals

                            CurrencyDecimals

                            CurrencyFormat

                            CurrencyFormat

                            CurrencyString

                            CurrencyString

                            DateSeparator

                            DateSeparator

                            DecimalSeparator

                            DecimalSeparator

                            ListSeparator

                            ListSeparator

                            LongDateFormat

                            LongDateFormat

                            LongDayNames

                            LongDayNames

                            LongDayNames

                            LongDayNames

                            LongTimeFormat

                            LongTimeFormat

                            NegCurrFormat

                            NegCurrFormat

                            ShortDateFormat

                            ShortDateFormat

                            ShortDayNames

                            ShortDayNames

                            ShortMonthNames

                            ShortMonthNames

                            ShortTimeFormat

                            ShortTimeFormat

                            ThousandSeparator

                            ThousandSeparator

                            TimeAMString

                            TimeAMString

                            TimePMString

                            TimePMString

                            TimeSeparator

                            TimeSeparator

                            TwoDigitYearCenturyWindow

                            TwoDigitYearCenturyWindow

                            Popular posts from this blog

                            ShellExecute in Delphi

                            ShellExecute in Delphi – Launch external applications. ShellExecute is Delphi Windows API function that is mostly used for launch external applications from our Delphi application. This function is linked to the ShellExecute Windows  API function. The function returns an integer that corresponds to an error code which is very useful when we need to show some status  if the function worked  or not . By using ShellExecute we can also do following operations…. Can print documents from within my program, without explicitly starting the application  that created the document, such as: print a Word-document without starting Word. Can open browser with a local HTML page Can surf to a site i.e. open an external URL link from a Delphi application Can send mails thorugh outlook Syntax of Windows API function HINSTANCE ShellExecute(   _In_opt_        HWND hwnd,   _In_opt_        LPCTSTR lpOperation,   _In_              LPCTSTR lpFile,   _In_opt_        LPC

                            Drawing Shapes in Delphi

                            Image

                            Believe me, drawing shapes in Delphi is so easy. To develop a software like CAD, Paint, CorelDraw Delphi provides large number of classes and members that supports to draw shapes on a form or on a graphic control. In Delphi, we draw shapes on canvas of a form or graphic controls. Canvas is an area of form where we can draw shapes, lines and can fill colors on shapes. In Delphi, every form or graphic controls have Canvas property which provides TCanvas object that can be used to draw shapes. TPen object is used to draw lines and we can set size, color of lines. TBrush object is used to set color and style to fill the shapes. Most frequently used classes for drawing shapes are TCanvas , TBitmap, TGraphics, TPen, TBrush TCanvas Use TCanvas as a drawing surface for objects that draw an image of themselves TBitmap   Bitmap is a powerful graphics object used to create, manipulate (scale, scroll, rotate, and paint), and store images in memory and as files on a disk.  TGraphics TGr

                            MS Excel Automation in Delphi

                            In this blog I will describe how to read and write data from and to an Excel file. Sometime in our application we use Excel for reporting purpose, for data import / export purpose and for other works. So here I will explain how to access an Excel file and use for data read / write. For this Excel 2003 or later should have installed in our system. First use Excel2000 unit to uses clause. This unit comes with Delphi installation it self. You can get the unit in installed path C:Program Files (x86)EmbarcaderoRAD Studio10.0OCXServers Uses    Excel2000; Before proceed I would mention an important word  LCID which is required at most places. So what it LCID? LCID = In Microsoft Excel, the LCID indicates the currency symbol to be used when this is an xlListDataTypeCurrency type.  Returns 0 (which is the Language Neutral LCID) when no locale is set for the data type of the column. We can get LCID in Delphi by using  GetUserDefaultLCID  function.. privat

                            Типов сообщений компилятора — более двухсот. Рассмотрим перечень наиболее встречающихся сообщений класса 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.

                            • 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, в случае если делитель — константное выражение.

                            Понравилась статья? Поделить с друзьями:
                          • Und ошибка на машинке haier
                          • Uncr data error cyclic redundancy check victoria
                          • Uncorrectable pci express error embedded device bus 0 device 0 function 0 error status 0x00100000
                          • Uncorrectable memory error processor 1 memory module 4
                          • Uncorrectable errors count как исправить