КОНСТАНТЫ ПРОСТЫХ ТИПОВ И ТИПА STRING
Объявление таких констант обычно не вызывает трудностей, так как в качестве их значения используются нетипизированные константы или их идентификаторы. Примеры объявлений: Type colors = (white, red, black); { ----- Правильные объявления: ----- } const CurrCol colors = red; Name String = 'Вирт H.'; Year Word = 1989; X Real = 0.1; Min Integer =0; Max Integer = 10; Days 1..31 = 1; Answer Char = 'Y'; {----- Неправильные объявления: ----- } Mass: array [Min..Max] of Real; {Нельзя использовать типизированные константы в качестве границ диапазона} a,b,c: Byte =0; {Нельзя использовать список идентификаторов} КОНСТАНТЫ-МАССИВЫ В качестве начального значения типизированной константы-массива используется список констант, отделенных друг от друга запятыми; список заключается в круглые скобки, например: Type colors = (white, red, black); Const ColStr: array [colors] of String [5] =('white', 'red', 'blak'); Vector: array [1..5] of Byte = (0,0,0,0,0); При объявлении массива символов можно использовать то обстоятельство, что все символьные массивы и строки в Object Pascal хранятся в упакованном формате, поэтому в качестве значения массива-константы типа char допускается задание символьной строки соответствующей длины. Два следующих объявления идентичны: const Digit: array [0..9] of Char = ('0', '1', '2', ' 3 ', ' 4'•, '5', '6', '7', '8', '9'); DigChr: array [0..9] of Char = '0123456789'; При объявлении многомерных констант-массивов множество констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседнего множества запятыми. В результате образуются вложенные структуры множеств, причем глубина вложения должна соответствовать количеству измерений (размерности) массива. Самые внутренние множества констант связываются с изменением самого правого индекса массива. Следующая программа выведет в компонент mmoutput три строки с монотонно увеличивающимися целыми числами: Procedure TfmExample.bbRunClick(Sender: TObject); Var i, j, k, 1: Byte; S: String; Const Matr: array [1..3, 1..5] of Byte = ((0, 1, 2, 3, 4), (5, 6, 7, 8, 9), (10,11,12,13,14)); Cube: array [0..1, 0..1, 0..2] of Integer = (((О,1,2),(3,4,5)), ((6,7,8),(9,10,11))); Mas4: array [0..1, 0..1, 0..1, 0..1] of Word = ((((О,1),(2,3)), ((4,5), (6,7))), (((8,9), (10,11)), ((12,13), (14,15)))); Begin S:=' '; for i:= I to 3 do for j:= 1 to 5 do S:= S + IntToStr(Matr[i,j]) +' '; mmOutput.Lines.Add(S); S: = ''; for i:= 0 to 1 do for j:= 0 to 1 do for k:= 0 to 2 do S:= S + IntToStr(Matr[i,j,k]) +' '; mmOutput.Lines.Add(S); S:=''; for i:= 0 to 1 do for j:= 0 to 1 do for k:= 0 to 1 do for l:= 0 to 1 do S:= S + IntToStr(mas4[i,j,k,l]:3); mmOutput.Lines.Add(S); End; Количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому измерению. КОНСТАНТЫ-ЗАПИСИ Определение константы-записи имеет следующий вид: <идентификатор>: <тип> = (<сп.знач.полей>) Здесь <идентификатор> - идентификатор константы; <тип> - тип записи; <сп. знач. полей> - список значений полей. Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Элементы списка отделяются друг от друга двоеточиями, например: Type Point = record X, Y: Real end; Vect = array [0..1] of Point; Month = (Jan, Feb, Mar, Apr, May, Jun, Jly, Aug, Sep, Oct, Nov, Dec); Date = record D: 1..31; M: month; Y: 1900..1999 end; Const Origon: Point = (X: 0; Y: -1); Line: Vector = ((X: -3.1; Y: 1.5), (X: 5.9; Y: 3.0)); SomeDay: Date = (D: 16; M: May; Y: 1997); Поля должны указываться в той последовательности, в какой они перечислены в объявлении типа. Если в записи используется хотя бы одно поле файлового типа, такую запись нельзя объявить типизированной константой. Для записей с вариантными полями указывается только один из возможных вариантов констант. Например: Type Forma = record case Boolean of True: (Birthplace: String [40]); False: (Country: String [20]; EntryPort: String [20]; EntryDate: array [1..3] of Word; Count: Word) end; const Percon1: Forma = (Country: 'Норвегия'; EntryPort: 'Мурманск'; EntryDate: (16, 3, 89); Count: 12); Percon2: Forma = (Birthplace: 'Москва'); КОНСТАНТЫ-МНОЖЕСТВА Значение типизированной константы-множества задается в виде правильного конструктора множества, например: Type Days = set of 1..31; Digc = set of ' 0 '.. ' 9 '; Error = set of 1..24; Const WorkDays: Days = [1..5, 8..12, 15..19, 22..26, 29, 30]; EvenDigits: Digc = ['0','2', '4', '6', '8']; ErrorFlag: Error= []; КОНСТАНТЫ-УКАЗАТЕЛИ Единственным значением типизированной константы-указателя может быть только nil, например: const pR: ^Real = NIL;
|