Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
BDE. Создание алиасов
Категория: Базы данных
Категория: Базы данных
Узнать все IP-адреса компьютера
Категория: Интернет и Сети
Категория: Интернет и Сети
Как создать ярлык
Категория: Приложение
Категория: Приложение
Получить имена всех папок и файлов в директории
Категория: Файловая система
Категория: Файловая система
Фреймы
Категория: Компоненты
Категория: Компоненты
Перегенерировать все индексы Dbase
Категория: Базы данных
Категория: Базы данных
Что значит Paramstr
Категория: Приложение
Категория: Приложение
Перекодировка текста DOS-Windows-Koi8
Категория: Текст и строки
Категория: Текст и строки
Упаковка ZIPTV
Категория: Компоненты
Категория: Компоненты
Взять часть URL, которая следует после названия сайта
Категория: Интернет и Сети
Категория: Интернет и Сети
Delphi - Справочник: TList
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 выше чем текущий номер элемента в списке. |