| Описание |  
Класс TList очень полезный универсальный контейнер списков.
Он отличается от массивов, в которых он обеспечивает более богатые функциональные возможности. 
  
В частности объекты TList могут быть отсортированы. Эта сортировка может быть с использованием любых выбранных критериев. Например, список может содержать набор объектов, которые имеют строку и численные поля. Вы можете отсортировать список по строке, по числу, по обоим, с возрастанием или убыванием, как Вы желаете. И пересортировать позже по другим критериям.
  
Показанный пример кода показывает такую сортировку.
  
Ключевые свойства и методы упомянуты ниже.
  
Свойство Capacity
  
Используется для установления размера (число указателей на объекты) списка. Предварительно установив в разумное значение, можно избежать множественных перераспределений памяти. 
  
Свойство Count
  
Число элементов (указателей) в списке. Может быть прочитано или записано. Если размер уменьшен в результате изменения значения Count, то удаляются элементы в конце списка. 
  
Свойство Items
  
Позволяет обращаться к элементам в списке. Например, myList.Items[2] ; возвращает 3-ий элемент в списке. Это свойство, заданное по умолчанию, вышеупомянутое может быть упрощено до myList[2];.
  
Свойство List
  
Возвращает элементы в массиве. 
  
Метод Add
  
Добавляет элемент в конец списока. 
  
Метод Assign
  
Заменяет список содержанием другого списка. 
  
Метод Clear
  
Удаляет все элементы списка, устанавливая Count в 0. 
  
Метод Delete
  
Удаляет элемент из списка по его позиции в списке. 
  
Метод Remove
  
Удаляет элемент из списка по его объектному указателю.
  
Метод Exchange
  
Меняет позиции двух элементов
  
Метод Move
  
Перемещает элемент в новую позицию списка. 
  
Метод Insert
  
Вставляет новый элемент в список в данную позицию.  
Метод First
  
Получает первый элемент в списке. 
  
Метод Last
  
Получает последний элемент в списке. 
  
Метод Sort
  
Сортирует список в соответствии с вашими указанными критериями. Сортировка списка проводится внутри TList, но каждая пара элемента сравнивается, вызывая функцию, которую вы указали для этого метода. 
  
Метод IndexOf
  
Выдает позицию указанного объекта в списке.
 |  
 |  
| Примечания |  
| 
Вы можете добавить Nil указатели в список. Delphi добавляет Nil указатели, когда Вы устанавливаете свойство Count выше чем текущий номер элемента в списке.
 |  
 |  
| Похожие команды |  
TStringList  Содержит список переменной длины, состоящий из строк
  
Array  Тип данных содержащий индексируемую коллекцию данных
  
 
  |    | 
  | 
| Пример кода : Создание, присвоение, сортировка, и переделывание списка |  
 unit Unit1; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls; 
 
type   // Определение класса клиента 
  TCustomer = class 
    private       // Поля данных этого нового класса 
      CustomerName   : String; 
      CustomerNumber : Integer; 
 
    public       // Свойства для  чтения значений этих данных 
      property Name : String 
          read CustomerName; 
      property Number : Integer 
          read CustomerNumber; 
       // Коструктрор 
      constructor Create(const CustomerName   : String; 
                         const CustomerNumber : Integer); 
  end; 
   // Определение класса формы 
  TForm1 = class(TForm) 
    procedure FormCreate(Sender: TObject); 
 
  private     // TList объект мы использует в этом коде 
    myList : TList; 
     // Метод для показа содержимого нашего объекта списка 
    procedure ShowListContents; 
 
  public 
 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.dfm} 
 
 // Конструктор Customer // -------------------------------------------------------------------------- 
constructor TCustomer.Create(const CustomerName   : String; 
                             const CustomerNumber : Integer); 
begin   // Сохранение переданных параметров 
  self.CustomerName   := CustomerName; 
  self.CustomerNumber := CustomerNumber; 
end; 
 
 // Программа сортировки TList : сравните клиентов по имени // -------------------------------------------------------------------------- // Возвращенное целое число имеет следующее значение : // //   > 0 : (положительное)	Item1 
является меньше чем Item2 //     0 : Item1 
равно Item2 //   <0 : (negative) 
больше чем item2 
function compareByName(Item1 : Pointer; Item2 : Pointer) : Integer; 
var 
  customer1, customer2 : TCustomer; 
begin 
  customer1 := TCustomer(Item1); 
  customer2 := TCustomer(Item2); 
   // Теперь сравнение строк 
  if      customer1.Name > customer2.Name 
  then Result := 1 
  else if customer1.Name = customer2.Name 
  then Result := 0 
  else Result := -1; 
end; 
 
 // Подпрограмма для показа содержимого нашего списка // -------------------------------------------------------------------------- 
procedure TForm1.ShowListContents; 
var 
  i : Integer; 
begin   // И повторный показ списка 
  for i := 0 to myList.Count-1 do 
  begin 
    ShowMessage(TCustomer(myList[i]).Name+' is customer number '+ 
                IntToStr(TCustomer(myList[i]).Number)); 
  end; 
end; 
 // Конструктор формы // -------------------------------------------------------------------------- 
procedure TForm1.FormCreate(Sender: TObject); 
var 
  customer : TCustomer; 
 
begin   // Создание объекта TList для хранения набора объектов клиент 
  myList := TList.Create; 
   // Создание нескольких объектов клиентов и добавление их в наш объект список 
  customer := TCustomer.Create('Neil Moffatt', 123); 
  myList.Add(customer); 
  customer := TCustomer.Create('Bill Gates', 64); 
  myList.Add(customer); 
   // Мы можем добавить объект, не присваивая в промежуточную переменную 
  myList.Add(TCustomer.Create('Henry Cooper', 999)); 
  myList.Add(TCustomer.Create('Alan Sugar', 2)); 
   // Теперь показываем список 
  ShowListContents; 
   // Теперь мы сортируем список в последовательность имён и повторяем показ 
  myList.Sort(compareByName); 
  ShowListContents; 
   // Теперь удаляем и вставляем некоторые объекты   // 
Обратите внимание, что индексы начинаются с 0 
  myList.Insert(2, TCustomer.Create('Added as item 3', 33)); 
  myList.Delete(4); 
   // И повторно показываем список 
  ShowListContents; 
end; 
 
end. 
 |  
Neil Moffatt является клиентом с номером 123 
Bill Gates является клиентом с номером 64 
Henry Cooper является клиентом с номером 999 
Alan Sugar является клиентом с номером 2 
  
Alan Sugar является клиентом с номером 2 
Bill Gates является клиентом с номером 64 
Henry Cooper является клиентом с номером 999 
Neil Moffatt является клиентом с номером 123 
  
Alan Sugar является клиентом с номером 2 
Bill Gates является клиентом с номером 64 
Added Добавленный как 3 элемент является клиентом с номером 33 
Henry Cooper является клиентом с номером 999 
 |  
  |