Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

2.2.6. Списки (tList)

Списки используются для автоматизации процедур создания динамических структур из элементов различных типов [1.9). Список ‑ это массив нетипизированных указателей на объекты, размещенные в динамической памяти. Потомки этого объекта входят в различные визуальные компоненты.

Определение типа pPointerListимеет вид:

Type pPointerList=^ TPointerList;

TPpointerList=Array[0..MaxListSize] Of Pointer;

2.2.6.1. Свойства

Capacity‑ допустимое число указателей в списке (всегда большеCount).

Count‑ фактическое точное число элементов в списке.

Items(I:Integer):Pointer‑ возвращает указатель наI‑й элемент.

2.2.6.2. Методы

Add(Item:Pointer):Integer‑ добавляет элемент в конец списка и возвращает его номер.

Clear‑ очистка списка без освобождения памяти.

Delete(N)‑ удалениеN‑го элемента из списка.

Exchange(N1,N2)‑ меняются местами значения под номерамиN1 иN2.

Expand‑ расширение памяти для списка (увеличениеCapasityна 16).

First/Last:Pointer‑ возвращает указатель на первый/последний элемент.

IndexOf(Item:Pointer):Integer‑ возвращает номер элементаItem.

Insert(N,Item:Pointer)‑ вставляет элемент в позициюN(список при необ­хо­димости расширяется).

Move(N1,N2)‑ перемещает элемент с позиции N1 в позициюN2.

Pack‑ удаляет пустые элементы в конце списка.

Remove(Item:Pointer):Integer‑ удаляет элементItem, возвращая его номер.

Sort(Compare:TlistSortCompare)‑ сортирует список функцией пользовате­ляCompare, которая имеет два параметра ‑ указателяU1,U2 (Pointer) и возвращает целое число (Integer) со значениями: отрицательное число (^U1<^U), ноль (^U1=^U) и строго положительное число (^U1>^U).

2.2.6.3. Схема создания списка

VarSpisok:TList;Element:Pointer;Znahenie:<нужный тип данного>;

BeginSpisok:=TList.Create; //создание пустого списка

Element:=New(Znahenie); //выделяем память (п.1.9.1)

... Spisok.Add(Znahenie); //добавляем элемент к списку

... Spisok.Remove(Element); //удаляем элемент из списка

... Dispose(Element); //удаляем элемент из памяти (п.1.9.1)

... Spisok.Free; //удаляем весь список

Примерфункции сравнения двух вещественных чисел типаDoubleи сортировки списка чисел:

Typepd=^Double; //тип указателя на вещественный типDouble

FunctionSravnenie(u1,u2:Pointer):Integer; //функция сравнения двух чисел

Begin If pd(u1)^<pd(u2)^ Then Result:=‑1 Else

If pd(u1)^=pd(u2)^ Then Result:=0 Else Result:=1 End;

... Var SpisokHisel:TList;...SpisokHisel:=TList.Create; //создание списка

... SpisokHisel.Sort(Sravnenie); //сортировка списка чисел SpisokHisel

2.2.7.Список строк и объектов (tStringList)

Объектом является список элементов. Каждый элемент содержит текстовую строку и объект любого класса, включая картинки. Строка мо­жет иметь вид: [<имя параметра>=]<значение>. Реализуется подобно спискам TList. Потомки этого объекта входят в различные визуальные компоненты (пример в п. 2.3.2.5).

2.2.7.1. Свойства

Capacity‑ допустимое число элементов в списке (всегда большеCount).

CommaText‑ объединяет все строки списка в одну строку с указанием разделителей: текст строки в кавычках и точка с запятой между строками.

Count‑ фактическое точное число элементов в списке.

Duplicates‑ наличие дубликатов строк:duIgnore(дубликат пропускается),duError(генерируется исключениеEListError),duAccept(допускается).

Nаmes[N]‑ возвращается имя параметраN‑й строки.

Objects[N]:TObject‑ открывает доступ к объекту под номеромN.

Sorted‑ строки сортируются в алфавитном порядке (True).

Strings[N]:String‑ возвращает строку под номеромN.

Text‑ объединяет все строки списка в одну строку.

Values(S)‑ возвращает строку со значением параметра под именемS.