Иллюстрированный самоучитель по Delphi 7 для профессионалов

Списки и коллекции

Практически любое приложение должно уметь выполнять ряд стандартных операций по обработке каких-либо данных. К ним относятся загрузка данных при открытии приложения, представление данных в удобном виде для использования внутри приложения, сохранение данных при завершении работы. Перечисленные действия необходимы и приложениям баз данных, и играм, и научным программам.

В принципе хранение и использование наборов значений можно обеспечить при помощи хорошо всем известных массивов. Однако их прямое использование требует от разработчика дополнительных усилий. Ведь при реализации программной логики необходимо добавлять в массив новые элементы, изменять существующие и удалять ненужные. Кроме этого, часто бывает необходимо найти элемент массива по значению. Все эти операции стандартны и повторяются для наборов любых типов данных.

Для решения перечисленных задач в Delphi доступны для использования специальные классы. Помимо хранения наборов значений в них реализованы свойства, позволяющие контролировать состояние списка и методы, обеспечивающие редактирование списка и поиск в нем отдельных элементов.

Для загрузки и сохранения данных используются потоки – классы, инкапсулирующие механизмы доступа к различным хранилищам информации – файлам, памяти и т. д. Их общим предком является класс Tstream.

Для работы со строковыми списками предназначены классы TStrings и TStringList.

Любые типы данных можно заносить в список указателей, который реализован в классе TList.

Использование наборов объектов (широко применяются в классах VCL), которые называются коллекциями, осуществляется при помощи классов TCollection и TCollectionltem.

В этой главе рассматриваются следующие вопросы:

  • что такое список; как устроено основное свойство всех списков, объединяющее его элементы;
  • добавление, изменение и удаление элементов списка;
  • поиск заданного элемента;
  • механизм выделения памяти под элементы списка;
  • список строк;
  • список указателей;
  • чем отличается коллекция от списка;
  • коллекции;
  • использование потоков.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.