Иллюстрированный самоучитель по Tirbo Pascal


              

Отсортированные коллекции


Часто бывает необходимо каким-либо образом упорядочить коллекцию, т.е. расставить ее элементы в определенном порядке. Для этих целей в Turbo Vision предусмотрен специальный объект TSortedCollection. Этот объект порожден от TCollection и, следовательно, уже умеет создавать коллекцию, вставлять в нее элементы и удалять их. Единственное, чего он не умеет - это сортировать коллекцию. В TSortedCollection есть абстрактный метод Compare, который используется для упорядочения элементов и который Вы должны перекрыть, чтобы обеспечить нужную Вам сортировку. Таким образом, чтобы создать отсортированную коллекцию, Вы должны создать объект-потомок от TSortedCollection и перекрыть его метод Compare.

По умолчанию этот метод получает в качестве параметров указатели на два элемента коллекции и должен вернуть 1, 0 или -1 в зависимости от того, больше, равно или меньше какое-то поле первого элемента по сравнению с этим же полем второго элемента. Поле, по которому сравниваются элементы, называется ключевым.

Например, нам требуется создать отсортированную коллекцию, содержащую каталог библиотеки (см. пример п. 19.3), причем в качестве ключевого используется поле Autor^. Тогда создадим новый объект

type

PSort = Tsort;

TSort = object (TSortedCollection)

Function Compare(Key1, Key2: Pointer): Integer; Virtual; 

end;

чтобы перекрыть метод Compare. Если теперь объявить новый метод TSort.Compare следующим образом:

Function TSort.Compare(Key1, Key2: Pointer): Integer;

var

A: PSort absolute Key1;

B: PSort absolute Key2; 

begin

if A.Autor < BA.Autor then

Compare := -1 else if A.Autor = B.Autor then

Compare := 0 

else

Compare := 1 

end; {TSort.Compare}

то после объявления

var

BookList: PSort;

вместо

var

BookList: PCollection;

программа выведет каталог, отсортированный по фамилиям авторов:

Джордейн Р.

Справочник программиста персональных компьютеров типа IBM PC, XT и AT

Финансы и статистика, 1991, 544 Йенсен К., Вирт Н.

Паскаль. Руководство для пользователя и описание языка финансы и статистика, 1982, 151 Скэнлон Л.




Содержание  Назад  Вперед