Программы, процедуры и функции имеют для описания типов спе-
циальный раздел описания типов. Например:
type
TRange = integer;
TNumber = integer;
TColor = (red,green,blue);
TTextIndex = 1..100;
TTestValue = -99..99;
TTestList = array[TestIndex] of TestValue;
PestList = ^TTestList;
B.Pascal 7 & Objects/LR - 71 -
TDate = object
year: integer;
month: 1..12;
day: 1.. 31;
procedure SetDate(D, M, Y: Integer);
function ShowDate: String;
end;
MeasureData = record
when: Date;
count: TTestIndex;
data: TestListPtr;
end;
TMeasureList = array[1..50] of MeasureData;
TName = string[80];
TSex = (male,female);
TPersonDate = ^TPersonData;
TPersonData = record
name,firstName: TName;
age: integer;
married: boolean;
father,child,sibling: Person;
case s: Sex of
male: (bearded: boolean);
female: (pregnant: boolean);
end;
TPersonDate = array[0..SizeOf(TPersonDate)-1] of Byte;
TPeople = file of TPersonData;
В этом примере Range, Number и Integer являются тождествен-
ными типами. TTestIndex является просто совместимым и совместимым
по присваиванию, но не тождественным, с типами Number, Range и
Integer. Обратите внимание на использование в описаниях TCharVal
и TPersonBuf выражений-констант.