Видалення елементів з колекції
Додавання елементів в колекцію.
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;