15.2. КОНСТАНТЫ-МАССИВЫ
В качестве начального значения типизированной константы-массива используется список констант, отделенных друг от друга запятыми; список заключается в круглые скобки, например:
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;
Количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому измерению.