Род Стивенс

Книги → Delphi. Готовые алгоритмы → Глава 2. Списки

Простые списки

Если в вашей программе необходим список постоянного размера, проще всего создать его при помощи массива. В этом случае можно легко,исследовать элемен­ты списка в цикле.

Многие программы используют списки, размер которых постоянно увеличи­вается и сокращается. Можно создать массив, соответствующий максимально воз­можному размеру списка, но такое решение не всегда будет оптимальным. Не все­гда известно, насколько большим окажется список; кроме того, вероятность, что он станет слишком объемным, может быть невелика. В этом случае созданный массив гигантских размеров будет понапрасну занимать память.

Изменение размеров массивов

Delphi до версии 4.01 не позволяет изменять размеры массивов. После объяв­ления размер массива остается постоянным. Однако с помощью указателей мож­но создавать массивы с изменяемым размером - динамические массивы.

Сначала с помощью инструкции type следует определить тип массива с мак­симальным размером. Чтобы индексы массива начинались с единицы, нужно уста­новить его размер от 1 до 1 ООО ООО, затем определить тип, который является указа­телем на этот массив.

Для выделения памяти под массив используйте функцию GetMem. Ее второй параметр указывает размер массива в байтах. Это значение должно быть равно числу элементов массива, умноженному на размер каждого элемента. Определить размер каждого элемента можно при помощи функции SizeOf.

Для освобождения памяти, выделенной под массив, необходимо использовать процедуру FreeMem.

Программа 81геАггможет служить примером изменения размеров массива. Вве­дите количество элементов массива и нажмите кнопку Resize (Изменить размер).

Программа изменит размер массива. В следующем фрагменте кода представлены наиболее интересные части программы.

type

// Определение типа массива.

.TintArray = array [1..1000000] of Integer;

// Определение указателя на тип массив.

PIntArray = ЛТ1пС\ггау;

// <часть кода пропущена>. . .

// Изменение размера массива.

procedure TSizeArrForm.CmdResizeClick(Sender : TObject) ;

var

Numltems : Integer; // Количество элементов массива.

Items : PIntArray; // Массив элементов.

I : Integer;

Txt : String;

begin

// Выделение памяти для массива.

Txt := ' ';

← предыдущая следующая →

Страницы раздела: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Публикация компанией Dropbox кода Zulip – средства общения для IT-разработчиков

20.11.2015
Одной из одобрительно встреченных программистами инициатив, реализующихся в рамках акции Hack Week, стала публикация исходного кода приложения Zulip – веб-приложения для общения между собой разработчиков в сфере IT-технологий.

Объединение ОС Android и Chrome

17.11.2015
Слухи об объединении двух крупнейших ОС компании Google, Android и Chrome, гуляют по Интернету уже более 5 лет, но до сих пор этого не случилось, хотя очевидно, что с течением времени эти ОС становятся всё более похожими: так, в последнее время появилось немало Android-устройств, к которым прилагаются клавиатуры, а Chrome OS «научилась» работать с сенсорными экранами.

Конференция Linux Piter 2015

15.11.2015
Уже почти через неделю в Санкт-Петербурге впервые в истории пройдёт конференция, посвящённая проблемам свободного программного обеспечения – Linux Piter 2015.