Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 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. Схема создания списка

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

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

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

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

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

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

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

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

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

Function Sravnenie (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.