но вот проблема, программа верней - то что пока написано, вылетает, перед кодом коечто укажу для пояснения:
всё поле - это масив из 40 елементов - записей (element);
Заполнение поля - это считывание с текстового файла каждого елемента записи, причом для каждого считываеться обязательноего имя, и номер, если елемент поля - участок, то считывается еще и его стоимость, аренда и тд., если транспортная магистраль - то считываеться стоимость, если карточка то считываеться её тип, и тд...
И всё якобы хорошо, при первом проходе всё для первого елемента правильно считывает, но когда начинает считываться второй - прога вылетает, не считывает даже обязательные поля...
вот код:
program Monoply;
uses
Crt,Graph;
const
N=40;
doma : set of byte = [1,3,6,8,9,11,13,14,16,18,19,21,23,24,26,28,29,31,32,34,37,39];
card : set of byte = [2,4,12,17,27,38];
special : set of byte = [7,10,20,30,36,40];
transport : set of byte = [5,15,25,35];
metro_phone : set of byte = [22,33];
nomber_of_plase : set of byte = [1..N];
type
element = record
_name:string;
_nomber:byte;
case Activ_Nomber:byte of
1,3,6,8,9,11,13,14,16,18,19,21,23,24,26,28,29,31,32,34,37,39 : ( cost,arenda_0,arenda_1,arenda_2,arenda_3,arenda_4,arenda_5:integer;
house_cost:byte);
2,4,12,17,27,3 : (type_of_card:byte;);
7,10,20,30,36,4 : (type_of_spesial:byte;);
5,15,25,35 : (cost_of_transport:integer;);
22,33 : (cost_of_metro_phone:integer;);
end;
var
F1:text;
M:array [1..N] of element;
{////////////////////////////////////////////////////////}
procedure Initializations;
var
Gdriver,Gmod:integer;
begin
Gdriver:=detect;
initgraph(Gdriver,Gmod,'init\');
end;
{////////////////////////////////////////////////////////}
procedure Zapis_v_pamat;
var
I:integer;
nom:byte;
begin
Assign(F1,'pole.txt');
reset(F1);
For I:=1 to N do
begin
with M[I] do
begin
read(F1,_name);
read(F1,_nomber);
Activ_nomber:=_nomber;
if Activ_nomber in doma
then begin
read(F1,cost);
read(F1,arenda_0);
read(F1,arenda_1);
read(F1,arenda_2);
read(F1,arenda_3);
read(F1,arenda_4);
read(F1,arenda_5);
read(F1,house_cost);
end;
if Activ_nomber in card then read(F1,type_of_card);
if Activ_nomber in special then read(F1,type_of_spesial);
if Activ_nomber in transport then read(F1,cost_of_transport);
if Activ_nomber in metro_phone then read(F1,cost_of_metro_phone);
end;
end;
close(F1);
end;
{////////////////////////////////////////////////////////}
begin
Zapis_v_pamat;
readln;
end.
в файле только первые 12 елементов, но вылетает на втором
Сообщение отредактировано: RathaR -