Видалення елементів з колекції

Додавання елементів в колекцію.

Begin

Var

Type

Приклад: Приклад створення та руйнування колекції

Створення та руйнування колекцій.

При створенні колекції конструктору в якості параметра передається назва класу-спадкоємця TCollectionltem, екземпляри якого будуть зберігатися в якості елементів цієї колекції :

Constructor Create(ItemClass: TCollectionltemClass);

Тип даних TCollectionltemClass є так званим метакласом - описом класу, і заявлений таким чином:

TCollectionltemClass = class of TCollectionltem;

Використання такого параметра не викликає ускладнень, в якості його значення передається назва класу без використання лапок. Руйнування екземпляра колекції робиться аналогічно руйнуванню будь-якого об'єкту в Delphi - викликом методу Free, після якого автоматично викликається деструкція Destroy. Наведемо приклад створення і руйнування колекції(лістинг 8.2), в якій зберігаються класи з двома властивостями: строковим Name і цілочисельним Age.

TCollItem=class (TCollectionItem)

Name: String;

Age: Integer;

End; { опис класу, екземпляри якого будуть зберігатись в колекції. Клас є спадкоємцем TCollectionltem.}

Collection: TCollection; { опис посилання на екземпляр клас-колекції TCollection}

Collection:=TCollection.Create (TCollItem); { Створення екземпляра класу-колекції, в якості параметра передається назва класа-екземпліра}

… {використання колекції}

Collection.Free; { Руйнування екземпляра колекції}

Для управління даними, що зберігаються в колекціях, реалізовані методи додавання і видалення елементів.

Додавання елементів колекції відбувається за допомогою виклику методів Add або insert, які, окрім створення елементу списку, одночасно створюють і екземпляр класу, що зберігається в цьому елементі. Посилання на знову створений екземпляр інформаційної структури повертається в якості значення цих функцій:

FunctionAdd: TCollectionltem;

FunctionInsert(Index: Integer): TCollectionItem;


 

Видалення елементів колекції виконується методом Delete по заданому індексу елементу. Одночасно зі знищенням елементу видаляються і дані, що зберігаються :

Procedure Delete(Index: Integer);

Для видалення усіх елементів колекції застосовується метод Clear, що також руйнує усі дані, що зберігаються :

Procedure Clear;

Відмітимо, що метод Clear автоматично викликається при руйнуванні колекції методом Free.

Доступ до елементів колекції, як і до елементів списків, реалізується через властивість items, доступне для читання і запису :

propertyItems[Index: Integer]: TCollectionltem;