3. Запись с вариантами

Записи, описанные выше, имеют строго определенную структуру. однако есть возможность создавать записи, имеющие несколько вариантов одного и того же поля. Вариантные поля записываются после описания безвариантных полей с помощью оператора Case.

ТУРЕ

zap=record

описание безвариантных полей;

Case имя поля: тип имени поля of

список констант выбора: (поле,... тип); ... список констант выбора: (поле,... тип);

end;

Пример:

Туре zap=record

Nomer: byte; {фиксированные поля}

Articul: integer;

Case Flag: boolean of {вариантные поля}

TRUE: (cena l: integer);

FALSE: (cena 2; real);

end;

Var P, Si Zap;

поле Cena l доступно только тогда, когда Flag=TRUE

поле Cena 2 доступно только тогда, когда Flag=FALSE

При использовании записей с вариантами необходимо придерживаться следующих правил:

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

запись может иметь только одну вариантную часть, причем вариантная часть должна размещаться в конце её;

Если поле, соответствующее какой-либо метке, является пустым, то оно записывается следующим образом:

список констант выбора: ( );

Program Prim46;

Type zap=record

nomer:byte;

artikul:integer;

case flag:boolean of

true:(cena1:integer);

false:(cena2:real); end;

Var h,s:zap;

BEGIN with h do

Begin nomer:=1; artikul:=2345; flag:=true; cena1:=25;

writeln('nomer=',nomer,' artikul=',artikul,' cena1=',cena1);

flag:=false; cena2:=3.2;

writeln('cena2 ',cena2);

end; readln; END.