Облака / Clouds
    Go to Copy.com
    Copy.com
    The bast cloud service
    Get 20 GB free!!!
    Support WebDav.
    Show more >>

    Go to Dropbox.com
    Dropbox.com
    time-tested cloud storage
    Support WebDav.
Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  BDE. Создание алиасов
   Категория: Базы данных
  Узнать все IP-адреса компьютера
   Категория: Интернет и Сети
  Как создать ярлык
   Категория: Приложение
  Получить имена всех папок и файлов в директории
   Категория: Файловая система
  Фреймы
   Категория: Компоненты
  Перегенерировать все индексы Dbase
   Категория: Базы данных
  Что значит Paramstr
   Категория: Приложение
  Перекодировка текста DOS-Windows-Koi8
   Категория: Текст и строки
  Упаковка ZIPTV
   Категория: Компоненты

Delphi - Справочник: TList

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  << Вернуться  

 TList
type TList;
Тип (Unit Classes)
Универсальный контейнер списков объектов
Описание:
Класс 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

Выдает позицию указанного объекта в списке.
Пример кода: Создание, присвоение, сортировка, и переделывание списка

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
Примечание:
Вы можете добавить Nil указатели в список. Delphi добавляет Nil указатели, когда Вы устанавливаете свойство Count выше чем текущий номер элемента в списке.

  << Вернуться