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


Класс TStringList - часть 3


TCityProps = class(TObject)

  Square: Longlnt;

  Population: Longlnt; 

Status: String/end;

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

function AddObject(const S: string; AObject: TObject): Integer; virtual;

Обратите внимание, что в параметре 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 обладает рядом дополнительных свойств и методов. Вспомогательные свойства класса обеспечивают разработчика информацией о состоянии списка. Дополнительные методы осуществляют поиск в списке и взаимодействие с файлами и потоками.




Начало  Назад  Вперед



Книжный магазин