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. |