Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы к письм. мод. по Делфи.doc
Скачиваний:
4
Добавлен:
18.07.2019
Размер:
271.36 Кб
Скачать

Расскажите о классах, предназначенных для хранения информации в виде списков

Ответ: Для хранения информации в виде списков в Delphi предусмотрено множество классов:

Класс TList — предназначен для хранения информации, представленной не типизированными указателями.

Класс TObjectList — предназначен для хранения информации, представленной экземплярами классов.

Класс TComponentList — предназначен для хранения информации, представленной экземплярами классов-наследников класса TComponent.

Класс TStringList — используется для хранения списка строк и связанных с ними объектов.

Класс TCollection — предназначен для хранения экземпляров классов-наследников класса TCollectionltem.

Основные свойства и методы классов-списков

Ответ: Для всех классов-списков, кроме TStack и TQueue, определены

методы добавления, удаления и вставки элементов Add, Delete и insert.

Всеми классами поддерживается метод Clear, удаляющий из списка все

элементы.

Количество элементов, которое находится в данный момент в списке, и

потенциально возможное количество хранимых элементов без дополнитель-

ных операций выделения памяти, можно получить с помощью свойств Count

и Capacity.

Для доступа к элементам списков, которые унаследованы от TList, исполь-

зуется индексное свойство items. К массивам строк, хранимых в экземп-

лярах классов TStringList, и связанным с ними объектам можно обращать-

ся через свойства strings и Objects, а стеки TStack и очереди TQueue

выдают свои элементы при их удалении из списка, либо с помощью коман-

ды Peek.

Классы TStack и TQueue имеют особенности в системе организации

свойств и методов в связи с тем, что организуют структуры для последо-

вательного доступа. Добавление элементов в них осуществляется методом

Push, а удаление методом Pop.

Опишите особенности классов-списков,

предназначенных для хранения объектов

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

экземпляров классов, предназначены классы TObjectList, TComponentList

и TCollection. Особенностью этих классов является возможность владе-

ния хранимыми объектами в смысле их разрушения при разрушении самих

списков, или при удалении элементов. Разрушение производится методом

Free и снимает с программы, использующей списки, ответственность за

корректное освобождение памяти, выделенной под эти объекты, что суще-

ственно снижает риск появления динамических ошибок и повышает надеж-

ность программы.

Первые два класса производят разрушение объектов опционально, при

истинном значении свойства OwnsObjects, а класс TCollection владе-

ет хранимыми в нем объектами полностью.

Классы-списки последовательного доступа TObjectstack и TObjectQueue

не имеют средств для разрушения хранимых объектов, так как имеют .дру-

гую логическую направленность — они предназначены для временного хра-

нения экземпляров классов, и объекты, которые хранятся в таких списках,

должны быть изъяты оттуда какими-либо фрагментами программы.

Опишите возможности и особенности хранения строковых массивов в классах-наследниках tStrings

Ответ: Для хранения массивов строк в Delphi описан базовый класс

TStrings, в котором объявлены абстрактные методы, описывающие основ-

ные действия, такие как:

» добавление, вставка и удаление строк из массива с возможностью до-

ступа по индексу, а также просто доступ к строке по индексу;

* упорядочивание строк внутри массива;

» загрузка массива из файла или потока и сохранение в файл или поток;

» сопоставление объектов строкам в массиве для хранения более слож-

ных данных или расширенных параметров строк.

Помимо обычных для представления информации в виде списков методов

Add, Delete и Insert, в классе TStringList предусмотрены методы для

добавления строк со связанными объектами AddObject и insertobject.

Получение информации также ориентировано на текстовый характер храни-

мых данных, например, поддерживается возможность получения всего мас-

сива строк в виде одной строки, причем в различных форматах, в зависимо-

сти ОТ используемого свойства — Text, CommaText или DelimitedString.

Строковые массивы поддерживают возможность сохранения информации

в файл или поток и чтения ее оттуда.

Поддерживается автоматическое упорядочивание строк по алфавиту и кон-

троль уникальности.