Класс TList
01.01.2007
Класс TList - универсальный список. Он представляет собой массив
нетипированных указателей и поэтому годится для хранения набора любых, в
том числе разнотипных, данных и объектов. При добавлении/удалении в
список данные не создаются и не уничтожаются - эта обязанность лежит
на программисте.
Приведем доступные ему методы и свойства класса:
- property Items[Index: Integer]: Pointer;
- Возвращает указатель на содержимое элемента списка с индексом Index. Это свойство является векторным свойством, принимаемым по умолчанию, и его имя можно при записи опускать.
- property Count: Integer;
- Определяет число элементов в списке.
- property Capacity: Integer;
- Определяет максимальное число элементов в списке. Оно может изменяться как явно - пользователем, так и при добавлении элементов в список, в том случае, когда Count>=Capacity. Максимальная емкость списка - 16380 элементов.
Управляют списком следующие методы:
- function Add(Item: Pointer): Integer;
- Добавляет в конец списка элемент, который будет равен Item (т. е. указывать на те же данные).
- function Remove(Item: Pointer): Integer;
- Удаляет из списка элемент, который равен Item.
- procedure Insert(Index: Integer; Item: Pointer);
- Вставляет элемент, равный Item, перед элементом с индексом Index.
- procedure Delete(Index: Integer);
- Удаляет из списка элемент с индексом Index.
- procedure Clear;
- Очищает список, устанавливая величины Count и Capacity в 0.
- procedure Exchange(Indexl, Index2: Integer);
- Меняет местами элементы списка с индексами Indexl и Index2.
- function Expand: TList;
- При соблюдении равенства Count=Capacity расширяет список. При емкости списка менее пяти элементов, он по умолчанию расширяется на четыре элемента, при пяти-восьми - на восемь, более восьми - на шестнадцать.
- function First: Pointer; function Last: Pointer;
- Возвращают значения первого п последнего (с индексом Count-1) элементов списка соответственно.
- function IndexOf(Item: Pointer): Integer;
- Возвращает индекс элемента, равного Item.
- procedure Move(CurIndex, Newlndex: Integer);
- Перемещает элемент списка с положения Curlndex в положение Newlndex.
- procedure Pack;
- Упаковывает список, сдвигая элементы к началу на пустующие места.
Наконец, если приведенных методов почему-либо недостаточно, то свойство
property List: pPointerList;
pPointerList = ^TPointerList;
TPointerList = array[0..65520 div SizeOf(Pointer)] of Pointer;
возвращает указатель непосредственно на список указателей (что означает, что свойство доступно только для чтения).

