Ошибка 201 фри паскаль

I have tried to make a simple snake game with Free Pascal, when I started the programme, it drew the map exactly what I want but after that, I pressed the button that I have set to control the snake and it exited with exit code 201.

I don’t know much about that exit code, could you explain me the problems of the programme? This is the longest program I have ever made with Pascal.

Here is the code:

    uses crt;

    type 
      ran=record
        x:byte;
        y:byte;
      end;

    var 
      f:ran;
      s:array[1..1000] of ran;
      i,j:longint;
      st,l:byte;

    function getkey:integer;
    var 
      k:integer;
    begin
      k:=ord(readkey);
      if k=0 then k:=-ord(readkey);
      getkey:=k;
    end;

    procedure fa;
    begin
      randomize;
      f.x:=random(98)+1;
      f.y:=random(23)+1;
      gotoxy(f.x,f.y);
      writeln('o');
    end;

    procedure draw;
    begin
      gotoxy(1,1);
      st:=1;
      for i:=1 to 25 do begin
        for j:=1 to 100 do write('X');
        writeln
      end;
      gotoxy(st+1,st+1);
      for i:=1 to 23 do begin
        for j:=1 to 98 do write(' ');
        gotoxy(st+1,i+2);
      end;
    end;

    procedure sts;
    begin
      s[1].x:=19;
      s[1].y:=6;
      gotoxy(s[1].x,s[1].y);
      writeln('@');
    end;

    procedure fa1;
    begin
      f.x:=29;
      f.y:=5;
      gotoxy(f.x,f.y);
      writeln('o');
    end;

    procedure eat;
    begin
      if (s[1].x=f.x) and (s[1].y=f.y) then begin
        l:=l+1;
        fa;
      end;
    end;

    function die:boolean;
    begin
      die:=false;
      if (s[1].x=1) or (s[1].x=100) or (s[1].y=1) or (s[1].y=25) then 
        die:=true;
      if l>=5 then
        for i:=5 to l do
          if (s[1].x=s[i].x) and (s[1].y=s[i].y) then 
            die:=true;
    end;

    procedure up;
    begin
      for i:=l downto 2 do begin
        s[i].y:=s[i-1].y;
        gotoxy(s[i].x,s[i].y);
        writeln('+');
      end;
      gotoxy(s[l].x,s[l].y+1);
      writeln(' ');
      s[1].y:=s[1].y-1;
      gotoxy(s[1].x,s[1].y);
      writeln('@');
    end;

    procedure down;
    begin
      for i:=l downto 2 do begin
        s[i].y:=s[i-1].y;
        gotoxy(s[i].x,s[i].y);
        writeln('+');
      end;
      gotoxy(s[l].x,s[l].y-1);
      writeln(' ');
      s[1].y:=s[1].y+1;
      gotoxy(s[1].x,s[1].y);
      writeln('@');
    end;

    procedure left;
    begin
      for i:=l downto 2 do begin
        s[i].x:=s[i-1].x;
        gotoxy(s[i].x,s[i].y);
        writeln('+');
      end;
      gotoxy(s[l].x+1,s[l].y);
      writeln(' ');
      s[1].x:=s[1].x-1;
      gotoxy(s[1].x,s[1].y);
      writeln('@');
    end;

    procedure right;
    begin
      for i:=l downto 2 do begin
        s[i].x:=s[i-1].x;
        gotoxy(s[i].x,s[i].y);
        writeln('+');
      end;
      gotoxy(s[l].x-1,s[l].y);
      writeln(' ');
      s[1].x:=s[1].x+1;
      gotoxy(s[1].x,s[1].y);
      writeln('@');
    end;

    procedure auto(k:integer);
    begin
      case k of
        -72:up;
        -80:down;
        -75:left;
        -77:right;
        119:up;
        115:down;
        97:left;
        100:right;
      end;
    end;

    procedure ingame(t:integer);
    var 
      d,e:boolean;
    begin
      repeat
        auto(t);
        d:=die;
        if d=true then exit;
        eat;
      until (keypressed);
      if keypressed then t:=getkey;
      case t of
        -72:up;
        -80:down;
        -75:left;
        -77:right;
        119:up;
        115:down;
         97:left;
        100:right;
      end;
      eat;
      d:=die;
      if d=true then exit;
    end;

    procedure first;
    var
      k:integer;
    begin
      draw;
      fa1;
      sts;
      if keypressed then k:=getkey;
      ingame(k);
    end;

    BEGIN
      clrscr;
      first;
      readln
    END.

Maxizar писал(а):1- Используйте Lazarus.

Если уметь патчить паскалевское иде, то для многих целей оно не хуже.

2- Забудьте про атавизмы (Goto, Uses Graph, Crt). Не ну правда это даже смешно:

Лучше несколько Goto чем один указатель — структуру программы не разрушает, багов сверх меры не создаёт. Инициализация Crt весит намного меньше Sysutils, а для хелловорда от них требуется лишь Delay или Sleep. Sysutils лишь не устраивает некритичного бага при Writeln(‘русский текст в Utf8 кодировке’); Другие преимущества нужно искать с микроскопом. Sdl работает намного стабильнее Graph и в линуксе и в виндовсе, но не имеет процедур типа Line, Cirkle — того что нужно для построения графиков.

4- Я переписал программу, и она полностью работает, так в чем проблема?

Ага, работает, скомпиленная лично вами, под вайном. Лазарус 0.9.28.2 beta под линуксом не желает её компилить — отсутствует модуль Graph. Имхо, только по этой причине прогамму ещё не разложили по полочкам.

из-за чего приходится проходить весь код… у вас код 100 строк.. и пару циклов….. Дебаггер в руки и вперед.

Какой тут ещё дебаггер? При условии компиляции и запуска, здесь и без него просто ищется. Воткнуть

Код: Выделить всё
A:=A div(A-A);

скомпилировать, запустить, посмотреть вывод, перенести вставку в другое место, скомпилить… И так до обнаружения проблемного оператора.

А автору программы можно посоветовать пореже использовать integer если нет уверенности насчёт ошибки переполнения — int64 наше всё.

Добавлено спустя 1 час 13 минут 11 секунд:
Да, вспомнил, при низкоуровневом рисовании нужно проверять координаты рисуемых точек на диапазон. Если рисовать за пределами окна, то может случиться страшное — что-то типа ошибки 201.

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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
program  simplecs;
type mas=array[1..100] of real;
     mas1=array[1..100] of integer;
     label 2, 3, 10;
     var
         r,s,t,a,u,x,xk:mas;
         nb:mas1;
        i,l,k,z1,mi,m1,ni,ne,ip,m,n:integer;
         eps,tmin,teta:real;
procedure sol00(r,s,t:mas;var a,x:mas; n,m:integer);
   var k1,k2,k3,j,mj,l,i:integer;
   BEGIN
       l:=m-2;
   for j:=1 to n do
   begin
   mj:=m*j;
   a[mj]:=0;
   for i:=1 to l do
   begin
   k1:=m*(j-1)+i;
   k2:=l*(j-1)+i;
   a[k1]:=r[k2];
   a[mj]:=a[mj]-r[k2];
   end;
   end;
   for i:=1 to n do
   begin
   k3:=m*i-1;
   a[k3]:=t[i];
   end;
   x[m-1]:=0;
   x[m]:=0;
   for i:=1 to l do
   begin
   x[i]:=s[i];
   x[m]:=x[m]-x[i];
end;END;
 procedure sol01(var u:mas;m:integer);
 var i,j,l:integer;
    BEGIN
    for j:=1 to m do
    for i:=1 to m do
    begin
      l:=m*(j-1)+i;
      u[l]:=0;
      if (i-j)=0 then
      u[l]:=1;
      end;
      END;
  procedure sol02(u,a:mas;m,n,j:integer;var del:real);
  var i,im,ij:integer;
  begin
  del:=0;
  for i:=1 to m do
  begin
  im:=i*m;
  ij:=m*(j-1)+i;
  del:=del+u[im]*a[ij];
  end;
  EnD;
  procedure sol03(var tmin:real;a,u:mas;nb:mas1;m,n:integer;var k:integer);
               var  bul,i,j,m1:integer;
               del:real;
     begin
     tmin:=0;
     m1:=m-2;
     for j:=1 to n do
     begin
    bul:=1;
    i:=1;
    while (bul=1) and (i<=m1) do
    if (j-nb[i])=0  then bul:=2
    else
    i:=i+1;
    if bul<>2 then
    begin
    sol02(u,a,m,n,j,del);
    if (del-tmin)<=0 then
    begin
    tmin:=del;
    k:=j;
    end;
    end;
    end;
    end;
    procedure sol04(u,a:mas;m,n,k:integer;var xk:mas);
    var
        ij,jk,i,j:integer;
      begin
     for i:=1 to m do
     begin
     xk[i]:=0;
     for j:=1 to m do
     begin
     ij:=m*(j-1)+i;
     jk:=m*(k-1)+j;
     xk[i]:=xk[i]+u[ij]*a[jk];
     end;
     end;
     end;
 procedure sol05(x,xk:mas;m:integer;var l:integer;var teta:real;eps:real);
 var
    i,m1:integer;
    r:real;
  begin
    teta:=10000;
    m1:=m-2;
     for i:=1 to m1 do
     if(xk[i]-eps)>=0 then
     begin
     r:=x[i]/xk[i];
    if (r-teta)<=0 then
    begin
    teta:=r;
    l:=i;
    end;
    end;
    end;
  procedure sol06(var x,xk:mas;m,l:integer;var teta:real);
  var i:integer;
  begin
    for i:=1 to m do begin
    If (i-l)<>0 then
    x[i]:=x[i]-teta*xk[i]
    else
    x[i]:=teta;
    end;
    end;
  procedure sol07(var u:mas;m,l:integer;xk:mas);
  var
        m1,j,lj,i,ij:integer;
       begin
    m1:=m-2;
    for j:=1 to m1 do
    begin
    lj:=m*(j-1)+l;
    u[lj]:=u[lj]/xk[l];
    end;
    for i:=1 to m do
    for j:=1 to m1 do
    if (i-l)<>0 then
    begin
    ij:=m*(j-1)+i;
    lj:=m*(j-1)+l;
    u[ij]:=u[ij]-u[lj]*xk[i];
    end;
    end;
  procedure sol08(u,a:mas;m,j:integer;var del:real);
  var mi,ij,i:integer;
  begin
  del:=0;
    for i:=1 to m do
    begin
    mi:=m*i-1;
    ij:=m*(j-1)+i;
    del:=del+u[mi]*a[ij];
    end;
    end ;
 procedure sol09(var tmin:real;var k:integer;a,u:mas;nb:mas1;m,n:integer);
 var bul,m1,i,j:integer;
     del:real;
   begin
   tmin:=0;
   m1:=m-2;
   for j:= 1 to n do
   begin
   bul:=1;
   i:=1;
   while (bul=1)  and (i<=m1) do
   if (j-nb[i])=0 then
   bul:=2
   else
   i:=i+1;
   if bul<>2 then
   begin
   sol08(u,a,m,j,del);
   if (del-tmin)<=0 then
   begin
   tmin:=del;
   k:=j;
   end;
   end;
   end;
   end;
procedure sol10(var tmin:real;u,a:mas;nb:mas1;m,n:integer;var k:integer;
eps:real);
 var bul,m1,i,j:integer;
   del,del1:real;
   begin
       tmin:=0;
       m1:=m-2;
    for j:=1 to n do
      begin
        bul:=1;
        i:=1;
     while (bul=1) and (i<=m1) do
         if (j-nb[i])=0 then
           bul:=2
           else
     i:=i+1;
     if bul<>2 then
     begin
     sol02(u,a,m,n,j,del);
     sol08(u,a,m,j,del1);
     if (abs(del1)-eps)<=0 then
     if (del-tmin)<=0 then
     begin
     tmin:=del;
     k:=j;
     end;
     end;
     end;
     end;
BEGIN
  write(' n');
  read(n);
  writeln('m');readln(m);
  writeln(' (eps)=>');read(eps);
  writeln('ip(ip=1 if MAKS;ip=0 if MIN )=>');
  read(ip);
  for i:=1 to n do
  begin
    writeln('t[',i, ']= ');
    read(t[i]);
    end;
  for i:=1 to m-2 do
  begin
  writeln('s[',i, ']= ');
  read(s[i]);
  end;
  for i:=1 to (m-2)*n do
  begin
   writeln('r[',i, ']= ' );
  read(r[i]);end;
  sol00(r,s,t,a,x,n,m);
  if (ip-1)=0 then
  for i:=1 to n do
  begin
   mi:=m*i-1;
   a[mi]:=-a[mi];
 end;
   sol01(u,m);
   m1:=m-2;
   for i:=1 to m1 do
   nb[i]:=100011+i;
   ni:=0;
   ne:=1;
3:sol03(tmin,a,u,nb,m,n,k);
2:if (tmin+eps)>=0 then
   if (ne)=1 then
   if (x[m]+eps)>=0 then
   begin
   ne:=2;
   for i:=1 to m1 do
   if (nb[i]-10000)>0 then
   ne:=3 ;
   if ne=3 then
   begin
   sol10(tmin,u,a,nb,m,n,k,eps);
    goto 2;
    end  else
    begin
    sol09(tmin,k,a,u,nb,m,n);
    goto 2;
    end;end else
    begin
    ip:=2;
    goto 10;
    end
    else
    if (ip-1)<>0 then
    begin
    x[m-1]:=-x[m-1];
    ip:=1;
    goto 10;
    end
    else
    begin
    ip:=1;
    goto 10;
    end
    else
    begin
    sol04(u,a,m,n,k,xk);
    sol05(x,xk,m,l,teta,eps);
    if (teta+5-10000)<0 then
    begin
    sol06(x,xk,m,l,teta);
    sol07(u,m,l,xk);
    nb[l]:=k;
    ni:=ni+1;
    if ne<>1 then
    if ne=2 then
    begin
    sol09(tmin,k,a,u,nb,m,n);
    goto 2;
    end
    else
    begin
    sol10(tmin,u,a,nb,m,n,k,eps);
    goto 2;
    end
    else
    goto 3;end
     else
     begin
     ip:=3;
     goto 10;
     end; end;
10:  writeln('ip=',ip);
 if ip=1 then begin
    for i:=1 to m-2 do
        writeln('x[', nb[i], ']=',x[i]:13);
        for i:=1  to m-2  do
        writeln('nb[',i,']=',nb[i]);end;
        writeln('f=', x[m-1]:13);
        readln; readln;readln;
END.

Написал прогу на сумму чисел в столбик(используя модуль). В ABC работает отлично, претензий нет. Но в Free дает ошибку 201(помоему ссылка на несущ. переменную). Если записать все в одну прогу(без модуля), то проблем нету. В принципе такого разногласия не должно быть. Что делать, помогите?!

Модуль:

unit sum;
interface
uses crt;
procedure chasti(a:longint; var e,d,s,t,dt,st,n: longint);
procedure summa(x,y: integer);
 
implementation
procedure chasti(a:longint; var e,d,s,t,dt,st,n: longint);
begin
e:=a mod 10;
n:=n+1;
if a>=10 then begin
d:=trunc((a-e)/10) mod 10;
n:=n+1; end;
if a>=100 then begin
s:=trunc((a-10*d-e)/100) mod 10;
n:=n+1; end;
if a>=1000 then  begin
t:=trunc((a-100*s-10*d-e)/1000) mod 10;
n:=n+1; end;
if a>=10000 then begin
dt:=trunc((a-1000*t-100*s-10*d-e)/10000) mod 10;
n:=n+1; end;
if a>=100000 then begin
st:=trunc((a-10000*dt-1000*t-100*s-10*d-e)/100000) mod 10;
n:=n+1; end;
end;
 
procedure summa(x,y: integer);
var  z: longint;
     i,b,n,e1,d1,s1,t1,dt1,st1,n1: longint;
BeGIN
clrscr;
n:=0;
z:=x+y;
chasti(z,e1,d1,s1,t1,dt1,st1,n1);
for i:=1 to n1 do
begin
b:=b+7;
gotoxy(1,b);
writeln(x);
writeln('+');
writeln(y);
writeln('------');
if i=1 then begin
gotoxy(n1,b+4);
writeln(e1); end;
if i=2 then begin
gotoxy(n1-1,b+4);
writeln(d1,e1); end;
if i=3 then begin
gotoxy(n1-2,b+4);
writeln(s1,d1,e1); end;
if i=4 then begin
gotoxy(n1-3,b+4);
writeln(t1,s1,d1,e1); end;
if i=5 then begin
gotoxy(n1-4,b+4);
writeln(dt1,t1,s1,d1,e1); end;
if i=6 then begin
gotoxy(n1-5,b+4);
writeln(st1,dt1,t1,s1,d1,e1); end;
readln;
end;
END;
end.
uses crt,sum;
var  x1,y1: integer;
 
BEGIN
clrscr;
 
write('Vvedite pervoye chislo: ');
readln(x1);
write('Vvedite vtoroye chislo: ');
readln(y1);
summa(x1,y1);

repeat until keypressed;
END.

Приложения написанные на Free Pascal могут генерировать ошибку времени выполнения (Run Time Error) когда в программе обнаруживаются определённые аварийные состояния . Этот документ содержит список возможных ошибок и описание их возможных причин.


1 Invalid function number (Неправильный номер функции)

Была попытка неправильного вызова системной функции.


2 File not found (Файл не найден)

Генерируется при попытке перенаименования, стирания или открытия несуществующего файла.


3 Path not found (Путь(директория) не найден)

Генерируется файловой системой когда путь не существует или неправелен.
Также генерируется при попытке получить доступ к несуществующему файлу.


4 Too many open files (Слишком много файлов открыто)

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


5 File access denied (В доступе к файлу — отказано)

Было запрешено получение доступа к файлу. Эта ошибка может произойти по нескольким причинам:

  • При попытке открыть файл, предназначенный только для чтения или в деиствительности являющиёся директорией, для записи.

  • В данный момент занят или заблокирован другим процессом.

  • При попытке создания файла или директории с именем, которое совпадает с именем уже созданного файла или директории.

  • При попытке чтения из файла, открытого только для записи.

  • При попытке записи в файл, открытый только для чтения.

  • При попытке удалить директорию или файл, когда это не возможно.

  • При неимении прав на доступ к данному файлу.


6 Invalid file handle (Неправильный хэндл файла)

Происходит, когда используемая Вами файловая переменная была обнулена (испорчена); Это говорит о том, что память вашей программы была повреждена.


12 Invalid file access code (Неправильные ключи доступа к файлу)

Генерируется когда процедуры reset или rewrite вызываются с неправильным параметром FileMode.


15 Invalid drive number (Неправильный номер диска)

Генерируется когда в функции Getdir или ChDir был передан неправильный номер диска.


16 Cannot remove current directory (Невозможно удалить текущую директорию)

Генерируется при попытке удалить текущую директорию.


17 Cannot rename across drives (Можно переименовывать файлы только в пределах одного диска)

Вы не можете переименовать файл в файл, находяшиёся на другом диске или в другом разделе.


100 Disk read error (Ошибка чтения с диска)

Генерируется при невозможности произвести чтение с диска. Обычно происходит при попытке чтения данных, после его окончания.


101 Disk write error (Ошибка записи на диск)

Генерируется когда Вы пытаетесь записать данные на переполненый диск.


102 File not assigned (Файл не определён)

Генерируется функциями Reset, Rewrite, Append, Rename и Erase, При передаче в них файловой переменной, для которой не была выполнена функция AssignFile.


103 File not open (Файл не открыт)

Генерируется следующими функциями : Close, Read, Write, Seek, EOf, FilePos, FileSize, Flush, BlockRead, и BlockWrite если файл не был открыт.


104 File not open for input (Файл не открыт для чтения)

Генерируется функциями Read, BlockRead, Eof, Eoln, SeekEof и SeekEoln если файл не был открыт при помощи Reset.


105 File not open for output (Файл не открыт для записи)

Генерируется функцией write если текстовый файл не был открыт при помощи Rewrite.


106 Invalid numeric format(Неправильный числовой формат)

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


150 Disk is write-protected (Диск защищён от записи)

(Критическая ошибка)


151 Bad drive request struct length (Неправильная длина структуры запроса)

(Критическая ошибка)


152 Drive not ready (Устройство не готово)

(Критическая ошибка)


154 CRC error in data (Ошибка контрольной суммы в данных)

(Критическая ошибка)


156 Disk seek error (Ошибка низкоуровнего поиска на диске)

(Критическая ошибка)


157 Unknown media type (Неизвестный тип …)

(Критическая ошибка)


158 Sector Not Found (Сектор не найден)

(Критическая ошибка)


159 Printer out of paper (Нет бумаги в принтере)

(Критическая ошибка)


160 Device write fault (Сбой записи устройства)

(Критическая ошибка)


161 Device read fault (Сбой чтения устройства)

(Критическая ошибка)


162 Hardware failure (Сбой железа)

(Критическая ошибка)


200 Division by zero (Деление на ноль)

Приложение пыталось разделить число на ноль.


201 Range check error (Ошибка проверки границ)

Если вы компилировали прогамму с включённой провереой границ, Вы можете получить эту ошибку в следующих случаях:

  1. Массив был вызван с индексом, выходящим за декларированые пределы.

  2. Попытка присвоить значение переменной, выходящее за декларированые границы (для instance и enumerated типов).


202 Stack overflow error (Переполнение стека)

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


203 Heap overflow error (Переполнение кучи)

Размер кучи превысил максимально возможный размер. Генерируется при попытке выделить память непосредственно функциями New, GetMem и ReallocMem, или когда экземпляр класса или объекта создаётся и памяти не достаточно. Пожалуйста учтите что, по умолчанию, Free Pascal поддерживает увеличение кучи, то есть, если необходимо, будет произведена попытка её увеличения. Как бы то ни было, если размер кучи превысил максимально допустимый системой и
железом, то Вы получите эту ошибку.


204 Invalid pointer operation (Непрваильная операция с указателем)

Будет сгенерирована при вызове функций Dispose или Freemem с неправильным указателем (чаще всего, Nil)


205 Floating point overflow (Максимальная границы числа с плавающей точкой)

Вы попытались использовать или создать слишком большое число с плавающей точкой.


206 Floating point underflow (Минимальная граница числа с плавающей точкой)

Вы попытались использовать или создать слишком маленькое число с плавающей точкой.


207 Invalid floating point operation (Неправильная операция над числами с плавающей точкой)

Может генерироваться если вы попытались получить квадратный корень или логарифм отрицательного числа.


210 Object not initialized (Объект не инициализирован)

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


211 Call to abstract method (Попытка вызова абстрактного метода)

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


212 Stream registration error (Ошибка регистрации потока)

Генерируется когда неправильный тип регистрируется в модуле objects.


213 Collection index out of range (Индекс элемента коллекции выходит за допустимые границы)

Генерируется когда Вы попытались обратиться к элементу коллекции с выходящим за допустимые границы индексом (модуль objects).


214 Collection overflow error (Переполнение коллекции)

Размер коллекции превысил максимально допустимый размер, а Вы попытались добавить новый элемент (модуль objects).


215 Arithmetic overflow error (Арифметическое переполнение)

Эта ошибка генерируется когда результат операции превысил допустимые границы. В отличие to Turbo Pascal, эта ошибка генерируется только для 32-bit и 64-bit арифметических переполнений. Это происходит согласно тому, что все операнды конвертируются в 32-bit или 64-bit, до того как производить вычисления.


216 General Protection fault (GP Ошибка защиты памяти)

Приложение попыталось обратиться к недопустимому участку памяти. Это может быть вызвано следующими причинами:

  1. Попытка получить разуказатель для nil.

  2. Попытка получить доступ к выходящему за допустимые границы участку памяти (например, вызов move с неправильной длиной).


217 Unhandled exception occurred (Произошо неизвестное исключение)

Произошло исключение, и для него не существеет хэндла. Модуль sysutils устанавливает handler(менеджер), который отлавливает все исключения, и безопасно выходит в случае обнаружения оного.


219 Invalid typecast (Неправильное приведение типов)

Генерируется когда недопустимое приведение типов производится над классом используя оператор as. Эта ошибка также генерируется, когда объект или класс приводится к недопустимому объекту или классу, и виртуальный метод этого объекта или класса вызывается. Эта последняя ошибка детектируется только с использованием опции -CR компилятора.


227 Assertion failed error (Сбой утверждения)

Утверждение провалено, и процедурная переменная AssertErrorProc не была уcтановлена.


Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка 201 тесо
  • Ошибка 20091 при привязке телефона xiaomi
  • Ошибка 2009 сбербанк
  • Ошибка 2009 роблокс

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии