Турбо Паскаль 6.0



Коллекции не объектов.


Вы можете так же добавить в коллекцию данные, не являющиеся объектами, но это приведет к другой серьезной проблеме. Коллекции ожидают получить нетипированные указатели на что-либо. Но некоторые методы TCollection предназначены для обработки коллекций экземпляров, порожденных от TObject. Они включают в себя методы доступа к потоку PutItem и GetItem, а так же стандартную процедуру FreeItem. Это означает, что Вы можете сохранить PString в коллекции, но если Вы попытаетесь передать эту коллекцию в поток, Вы получите неудовлетворительные результаты, если не перекроете стандартные методы GetItem и PutItem. Аналогично, когда Вы пытаетесь освободить коллекцию, она освобождает каждый элемент, используя FreeItem. Если Вы хотите использовать в коллекции элементы не типа TObject, Вам необходимо переопределить смысл "элемента" в GetItem, PutItem и FreeItem. В TStringCollection, например, делается именно это. Если Вы работаете с осторожностью, Вы найдете коллекции (и объекты, порожденные от коллекций) быстрыми, гибкими и настраиваемыми структурами данных.




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