Чтобы использовать изложенную выше стратегию, программе необходимо
знать все параметры списка, следить за размером массива, числом используемых
в настоящее время элементов и т.д. Если понадобится создавать несколько спис-
ков, то нужно многократно копировать все переменные и дублировать код, управ-
ляющий различными массивами.
Классы Delphi значительно упрощают эту задачу. Класс TSimpleList инкап-
сулирует структуру списков, облегчая управление ими. У этого класса есть мето-
ды Add и RemoveLast, используемые в основной программе.
Также в нем присутствует функция Item, которая возвращает значение опре-
деленного элемента списка. Она проверяет, чтобы индекс требуемого элемента был
в пределах установленных границ массива. Если это не так, то функция вызывает
ошибку диапазона (Out of bounds). При этом происходит остановка программы
вместо возникновения неявного сбоя.
Процедура ResizeList объявлена как частная внутри класса TSimpleList.
Это скрывает изменение размера списка от основной программы, поскольку код
должен функционировать только внутри класса.
С помощью класса TSimpleList в приложениях можно создавать несколько
списков. Для построения списка достаточно объявить объект типа TSimpleList
и далее использовать метод Create этого класса. Каждый объект имеет свои пере-
менные, поэтому любой из них может управлять отдельным списком.
var
Listl, List2 : TSimpleList;
procedure MakeLists;
begin
// Создание объектов TSimpleList.
Listl := TSimpleList.Create;
List2 := TSimpleList.Create;
end;
Программа SimList демонстрирует использование класса TSimpleList. Для
того чтобы добавить элемент к списку, укажите значение в поле ввода и щелкните
по кнопке Add (Добавить). Объект TSimpleList при необходимости изменяет
размеры массива. Если список еще не пуст, удалите последний элемент списка,
нажав кнопку Remove (Удалить).
Когда объект TSimpleList изменяет размеры массива, он выводит окно сооб-
щения, в котором содержится информация о размере массива, количестве неисполь-
зованных элементов в нем и значении переменной Shr inkWhen. Когда число исполь-
зованных ячеек массива падает ниже значения ShrinkWhen, программа уменьшает
размеры массива. Обратите внимание, что когда массив почти пуст, переменная
ShrinkWhen становится равной нулю или отрицательной. В этом случае размер мас-
сива не будет уменьшаться, даже если вы удалите из списка все элементы.
Программа SimList прибавляет к массиву 50% пустых ячеек, если необходимо
увеличить его размер, но всегда оставляет как минимум одну пустую ячейку. Эти
значения были выбраны для удобства работы с программой. В реальных приложе-
ниях процент свободной памяти должен быть меньше, а минимальное число сво-
бодных ячеек - больше.
Большие значения порядка 10% текущего размера списка и минимум 10 неис-
пользуемых записей были бы более приемлемы.
Опубликовал Kest
September 13 2009 19:02:54 ·
0 Комментариев ·
6139 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.