type

TDuplicates = (duplgnore, dupAccept, dupError);

определяет реакцию списка на добавление повторного элемента:

□
duplgnore - запрещает добавление повторных элементов;
О dupAccept - разрешает добавление повторных элементов;

• dupError - запрещает добавление повторных элементов и генерирует исключительную ситуацию.

Класс TStringList немыслимо представить себе без возможностей сортировки. Если вас удовлетворит обычная сортировка, то для этого можно использовать свойство sorted (сортировка выполняется при значении True) или метод Sort. Под "обычной" имеется в виду сортировка по тексту строк с использованием функции Ansicomparestr (т. е. с учетом национальных символов, в порядке возрастания). Если вы хотите отсортировать список по другому критерию, к вашим услугам метод:

type

TStringListSortCompare = function(List: TStringList; Indexl,

Index2: Integer): Integer;
procedure CustomSort(Compare: TStringListSortCompare);

Чтобы отсортировать список, вы должны описать функцию сравнения двух элементов с индексами indexl и Index2, которая должна возвращать сле-дующиерезультаты:

□ 1 - если элемент с индексом indexl вы хотите поместить впереди элемента Index2;
ПО - если они равны;

□ 1 - если элемент с индексом indexl вы хотите поместить после элемента Index2.

Для описанного выше примера с объектом-городом нужны три процедуры:

function SortByStatus (List: TStringList; Indexl, Index2: Integer):

Integer;

begin Result := AnsiCompareStr((List.Objects[Indexl] as TCityProps).Status,

(List.Objects[Index2] as TCityProps) .Status;
end;

function SortBySquare (List: TStringList; Indexl, Index2: Integer):

Integer;

begin if (List.Objects[Indexl] as TCityProps).Square < (List.Objects [Index2] as TCityProps) . Sguare) then Result :=-1

else if (List.Objects[Indexl] as TCityProps).Square =

(List.Objects[Index2] as TCityProps).Square then Result := 0

else Result := 1;
end;

function SortByTJcpulation (List: TStringList; Indexl, Index2: Integer):

Integer;

begin if (List.Objects[Indexl] as TCityProps).Population < (List .Objects [Index2] as TCityProps) . Population then Result := -1 else

if (List.Objects[indexl] as TCityProps) . Population = (List.Objects [Index2] as TCityProps) . Population then Result : = 0 else Result := 1;
end;

Передаем одну из процедур в метод CustomSort:

Cities.CustomSort(SortByPopulation);

Для поиска нужного элемента используется метод

function Find (const S: string;
var Index: Integer): Boolean;

В параметре s передается значение для поиска. В случае успеха функция возвращает значение True, а в параметре index содержится индекс найденного элемента.

Метод

function IndexOf(const S: string): Integer;

возвращает индекс найденного элемента s. Иначе функция возвращает -1. Метод

function IndexOfName (const Name: string): Integer;

возвращает индекс найденного элемента, для которого свойство Names совпадает со значением параметра Name.

Для поиска связанных объектов используется метод

function IndexOfObject(AObject: TObject): Integer;

В качестве параметра AObject должна передаваться ссылка на искомый объект. А свойство


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Декабрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс