Delphi 7. Занятие 1_6.
Содержание
Двумерный массив. Постановка задачи
Рассмотрим для начала, как организовать и использовать двумерный массив, в частности двумерный массив строк.
В предыдущем занятии мы рассмотрели, как создать в delphi одномерный массив чисел для хранения значений целого типа (Одномерные массивы в delphi)
Объявим теперь массив, хранящий строковые значения.
var vArr[0..1] of string;
и заполним его такими, например, значениями:
vArr[0] :='Столбец 1'; vArr[1] :='Столбец 2';
А теперь поставим задачу: надо создать массив, в котором будем хранить значения, записанные в ячейках таблицы. Например:
delphi массив строк
Посмотрим, как создаётся массив строк.
type
tArr=array[0..1,0..2] of string;
var vArr:tArr;
Расположение элементов массива в памяти
Так как в приведённом примере каждый элемент массива хранит 18 символов (включая пробелы), то каждому элементу для хранения необходимо 18+2 байт памяти (1 символ занимает 1 байт + 2 байта под символы конца строки #0).
Если посмотреть на расположение элементов в памяти, то номера ячеек заполняются следующим образом:
Где n — адрес нулевой ячейки массива.
Тогда элемент vArr[i,j] будет иметь адрес N=n+i*20+j
Массив с тремя измерениями
Аналогично можно определить трехмерный массив строк.
tArr=array[0..4,0..2,0..3] of string;
var vArr:tArr;
Обращение к ячейке трёхмерного массива будет иметь вид: vArr[2,1,3].
Многомерные массивы
Массивы большей размерности определяются подобным образом.
В общем виде это выглядит так:
type
tArr=array[высшая размерность, … , низшая размерность] of тип_элемента
Правило «счётчика»
При заполнении массива надо придерживаться правила счётчика такси.
Заполняя массив, увеличиваем сначала правый индекс. Затем, увеличив на 1 индекс левее, опять прокручиваем правый индекс. И так далее.
Видео. Программа обработки массива.
Задача: сформировать массив для хранения значений из таблицы 1. Сформировать из данных, хранящихся в массиве, одну строку и отобразить её в компоненте memo.
Объявим тип «массив» с двумя измерениями (двумерный массив):
tArr=array[0..1,0..2] of string;
ar vArr:tArr; s:string;
Задаём начальное значение переменной s:
s:=''; //пустая строка
Заполняем массив:
vArr[0,0]:='столбец 0 строка 0';
vArr[0,1]:='столбец 0 строка 1';
vArr[0,2]:='столбец 0 строка 2';
vArr[1,0]:='столбец 1 строка 0';
vArr[1,1]:='столбец 1 строка 1';
vArr[1,2]:='столбец 1 строка 2';
Формируем строку для вывода в memo:
s:=vArr[0,0]+' '+vArr[0,1]+' '+vArr[0,2]+' '+vArr[1,0]+' '+vArr1,1]+' '+vArr[1,2];
Используем свойство «text» объекта memo1.Lines:
memo1.Lines.Text:=s;
Создание программы представлено на видео.
Заключение.
Рассмотрено создание двумерного статического массива на примере массива строкового типа. Дана общая формула создания многомерного массива и приведён пример трехмерного массива.
Приведено правило распределение памяти под элементы массива.
Глоссарий.
- Массив строкового типа.
- Двумерный массив.
- Расположение элементов массива в памяти.
- Массив с тремя измерениями.
- Многомерные массивы.
- Правило «счётчика».
- Компонент memo.