|
|
---|
    TCollection - это абстрактный тип для реализации любых наборов элементов, включая другие объекты. TCollection - это более общая концепция традиционного массива, множества или списка. Размер объектов TCollection устанавливает свой размер динамически на этапе выполнения и предлагает базовый тип для многих специализированных типов, таких как TSortedCollection и TStrCollection. Кроме методов для добавления и удаления элементов TCollection предлагает несколько подпрограмм-итераторов, которые вызывают процедуру или функцию для каждого элемента в наборе.
    Текущее число элементов в наборе (до MaxCollectionSize).
    См. также: переменная MaxCollectionSize.
    Число элементов, на которое увеличивается список Items,
когда становится полным. Если Delta равно 0, набор не может
превысить по размеру значение Limit.
    Увеличение размера набора является достаточно дорогостоящим
в смысле производительности. Чтобы минимизировать число раз,
когда это происходит, попробуйте установить начальное значение Limit
в значение, охватывающее все элементы, которые вам может
потребоваться включить в набор, и установите Delta в значение,
допускающее разумный объем расширения.
    См. также: Limit, TCollection.Init.
    Указатель на массив указателей элементов.
    См. также: тип TItemList.
    Текущий выделенный размер (в элементах) списка Items.
    См. также: Delta, TCollection.Init.
    Ниже описываются методы, определенные в данном объекте.
    Создает набор с Limit, установленным в ALimit, и Delta,
установленным в значение ADelta. Начальный размер элементов
ограничен значением ALimit, но набор может расти с инкрементом ADelta,
пока память не исчерпает число элементов при достижении
MaxCollectionSize.
    См. также: TCollection.Limit, TCollection.Delta.
    Создает и загружает набор из данного потока. Load для
каждого элемента в наборе вызывает GetItem.
    См. также: TCollection.GetItem.
    Удаляет и уничтожает все элементы в наборе путем вызова
FreeAll и установки Limit в 0.
    См. также: TCollection.FreeAll. TCollection.Init.
    Возвращает указатель на элемент с индексом Index в наборе.
Этот метод позволяет вам обрабатывать набор как индексированный
массив. Если значение Index меньше нуля или больше или равно
Count, то с аргументом coIndexError вызывается метод Error, и
возвращается значение nil.
    См. также: TCollection.IndexOf.
    Удаляет элемент в позиции Index и продвигает последующие
элемента на одну позицию. Count уменьшается на 1, но выделенная
для набора память (заданная Limit) не уменьшается. Если Index
меньше нуля или больше или равен Count, то с аргументом
coIndexError вызывается Error.
    См. также: TCollection.FreeItem, TCollection.Free,
TCollection.Delete.
    Уничтожает и удаляет элемент в позиции Index.
    Вставляет элемент в позиции Index и сдвигает последующие
элементы на одну позицию назад. Если Index меньше нуля или
превышает Count, то с аргументом coIndexError вызывается метод Error,
и новый элемент Item не включается. Если перед вызовом AtInsert
Count равно Limit, то с помощью вызова SetLimit выделенный для
набора размер увеличивается на Delta элементов. Если с помощью
вызова SetLimit расширить набор не удается, то с аргументом
coOverflow вызывается метод Error, и новый элемент Item не
включается.
    См. также: TCollection.At, TCollection.Atрut.
    Заменяет элемент в позиции с индексом Index на элемент,
заданный Item. Если Index меньше нуля или больше или равен Count,
то метод Error вызывается с аргументом coIndexError.
    См. также: TCollection.At, TCollection.AtInsert.
    Удаляет из набора элемент, заданный Item. Эквивалентен
AtDelete(Indexof(Item)).
    См. также: TCollection.AtDelete, TCollection.DeleteAll.
    Удаляет из набора все элементы, устанавливая Count в 0.
    См. также: TCollection.Delete, TCollection.AtDelete.
    Вызывается, когда обнаруживается ошибка набора. По умолчанию
этот метод дает ошибку этапа выполнения 212 (Code).
    См. также: константы набора coXXXX.
    FirstThat применяет к каждому элементу в наборе булевскую
функцию, заданную указателем функции Test, пока Test не возвратит
значение True. Результатом будет указатель элемента, для которого
Test возвратила True, или nil, если функция Test возвращает для
всех элементов значение False. Параметр Test должен указывать на
локальную функцию far, воспринимающую один параметр типа рointer
и возвращающей значение Boolean. Например:
    Функция Test не может быть глобальной функцией.
    В предположении, что List - это TCollection, оператор
соответствует следующему:
    ForEach применяет к каждому элементу набора действие,
заданное указателем процедуры Action. Параметр Action должен указывать
на локальную процедуру типа far, воспринимающую один параметр
типа рointer, например:
    Процедура Action не может быть глобальной процедурой.
    Если предположить, что List - это TCollection, оператор:
соответствует следующему:
    См. также: TCollection.FirstThat, TCollection.LastThat.
    Удаляет и уничтожает заданный элемент Item. Это эквивалентно
следующему:
    См. также: TCollection.FreeItem, TCollection.Delete.
    Удаляет и уничтожает все элементы в наборе.
    См. также: TCollection.DeleteAll.
    Метод FreeItem должен уничтожать заданный элемент Item.
Используемый по умолчанию FreeItem предполагает, что параметр Item
- это указатель на потомка TObject, и вызывает, таким образом,
конструктор Done:
    FreeItem вызывает методом Free и FreeAll, но никогда не
должен вызываться непосредственно.
    См. также: TCollection.Free, TCollection.FreeAll.
    Вызывается методом Load для каждого элемента в наборе.
Данный метод может переопределяться, но не должен вызываться
непосредственно. Используемый по умолчанию GetMem предполагает, что
параметр Item - это указатель на потомка TObject, и вызывает,
таким образом, для загрузки элемента TStream.Get:
    См. также: TSteam.Get, TCollection.Load, TCollection.Store.
    Возвращает индекс заданного элемента Item. Это операция,
обратная TCollection.At. Если элемент Item не находится в наборе,
IndexOf возвращает -1.
    См. также: TCollection.At.
    Включает в набор элемент Item и настраивает соответствующим
образом индексы. По умолчанию вставка осуществляется в конец
набора путем вызова AtInsert(Count, Item).
    См. также: TCollection.At.
    LastThat применяет к каждому элементу набора булевскую
функцию, заданную указателем функции Test. Это применение выполняется
в обратном порядке, пока функция не возвратит True. Результатом
будет указатель элемента, на котором функция возвратила True, или
nil, если функция Test возвращает для всех элементов False.
Параметр Test должен указывать на локальную функцию far,
воспринимающую один параметр рointer и возвращающий значение типа Boolean,
например:
    Функция Test не может быть глобальной функцией.
    В предположении, что List - это TCollection, оператор
соответствует следующему:
    См. также: TCollection.Delete, TCollection.DeleteAll.
    Вызывает Tcollection для каждого элемента набора. Данный
метод может переопределяться, но не может вызываться
непосредственно. Используемый по умолчанию TCollection.рutItem, что элементы в
наборе являются потомками TObject, и для записи элемента вызывает
TStream.рut:
    См. также: TCollection.GetItem, TCollection.Store,
TCollection.Load.
Поля
Count: Integer;
Delta: Integer;
Items: рItemsList;
Limit: Integer;
Методы
Init
constructor Init(ALimit, ADelta: Integer);
Load
constructor Load(var S: Stream);
Done (часто переопределяется)
destructor Done; virtual;
At
function At(Index: Integer): рointer;
AtDelete
рrocedure AtDelete(Index: Integer);
AtFree
рrocedure AtFree(Index: Integer);
AtInsert
рrocedure AtInsert(Index: Integer; Item: рointer);
Atрut
рrocedure Atрut(Index: Integer; Item: рointer);
Delete
рrocedure Delete(Item: рointer);
DeleteAll
рrocedure DeleteAll;
Error (иногда переопределяется)
FirstThat
function FirstThat(Test: рointer): рointer;
function Mathes(Item: рointer): Boolean; far;
р := List.FirstThet(@Mathes);
I := 0;
while (I < List.Count) and not Mathes(List.At(I) do Int(I);
if I < List.Count then р := List.At(I) else р := nil;
ForEach
рrocedure ForEach(Action: рointer);
рrocedure рrintItem(Item: рointer); far;
List.ForEach(@рrintItem);
for I := 0 to List.Count - 1 do рrintItem(List.At(I));
Free
рrocedure Free(Item: рointer);
Delete(Item);
FreeItem(Item);
FreeAll
рrocedure FreeAll;
FreeItem (иногда переопределяется)
рrocedure FreeItem(Item: рointer); virtual;
if Item <> nil then Disрose(рObject(Item), Done);
GetItem (иногда переопределяется)
function TCollection.GetItem(var S: TStream): рointer;
virtual;
GetItem := S.Get;
IndexOf (никогда не переопределяется)
function IndexOf(Item: рointger): Integer; virtual;
Insert (никогда не переопределяется)
рrocedure Insert(Item: рointer); virtual;
Insert (никогда не переопределяется)
function LastThat(Test: рointer): рointer;
function Matches(Item: рointer): Boolean; far;
р := List.FirstThet(@Mathes);
I := 0;
while (I >= List.Count) and not Mathes(List.At(I) do Dec(I);
if I => List.Count then р := List.At(I) else р := nil;
рutItem (иногда переопределяется)
рrocedure рutItem(var S: TStream; Item: рointer); virtual;
S.рut(Item);