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

Класс TStringList

Обратите внимание, что в параметре AObject необходимо передавать указатель на объект. Проще всего это сделать таким образом:

SomeStrings.AddObject('Someltem', TCityProps.Create);

Или же так:

var SPb: TCityProps;
…
SPb: = TCityProps.Create; {Создание объекта}
SPb.Population: = 5000000;
…
SomeStrings.Strings[i]: = 'Санкт-Петербург';
SomeStrings.Objects[i]: = SPb; (Связывание объекта и строки}

Можно поступить и подобным образом (помните, что строка уже должна существовать):

…
SomeStrings.Strings[i]: = 'Санкт-Петербург';
SomeStrings.Objects[i]: = TCityProps.Create;
(SomeStrings.Objects[i] as TCityProps).Population: = 5000000;
…

Аналогично методу insert, элемент и связанный с ним объект можно вставить в произвольное место списка методом:

procedure InsertObject(Index: Integer; const S: string; AObject: TObject);

При перемещении методом Move вместе с элементом переносится и указатель на связанный объект.

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

При удалении элемента списка удаляется только указатель на объект, а сам объект остается в памяти. Для его уничтожения следует предпринять дополнительные усилия:

…
for i: = 0 to SomeList.Count – 1 do
SomeList.Objects[i].Destroy;
…

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

TCityProps(SomeList.Objects[i]).Destroy;

Выполнять не обязательно – нужный деструктор будет вызван автоматически, хотя в данном случае приведение типов ошибкой не является.

Метод:

procedure Clear; override;

Полностью очищает список, удаляя все его элементы.

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

Свойство только для чтения:

property Count: Integer;

Возвращает число элементов списка.

Так как основу списка составляет динамический массив, то для него в процессе работы должна выделяться память. При добавлении в список новой строки память для нее выделяется автоматически. Свойство:

property Capacity: Integer;

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

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