Класс TStringList
Для удаления элемента списка используется метод:
procedure Delete(Index: Integer);
Метод:
procedure Move(Curlndex, Newlndex: Integer);
Перемещает элемент, заданный индексом curindex, на новую позицию, заданную индексом Newlndex.
А метод:
procedure Exchange(Indexl, Index2: Integer);
Меняет местами элементы с индексами index1 и index2.
Довольно часто в списках размешается строковая информация следующего вида:
'Name=Value'
В качестве примера можно привести строки из файлов INI или системного реестра. Специально для таких случаев в списке предусмотрено представление строк в двух свойствах. В свойстве Names содержится текст до знака равенства. В свойстве values содержится текст после знака равенства по умолчанию. Однако символ-разделитель можно заменить на любой другой, использовав свойство:
property NameValueSeparator: Char;
Доступ к значениям свойства values осуществляется по значению. Например, если в списке есть строка:
City=Saint-Petersburg
То значение свойства value будет равно:
Value['City'] = 'Saint-Petersburg'
Кроме этого, значение свойства value можно получить, если известен его индекс:
property ValueFormlndex[Index: Integer]: string;
Как видно из объявления внутреннего списка FList (см. выше), с каждым элементом списка можно связать любой объект. Для этого используется свойство:
property Objects[Index: Integer]: TObject;
Свойство strings элемента и свойство objects связанного с ним объекта имеют одинаковые индексы. Если строка не имеет связанного объекта, то свойство objects равно Nil. Один объект может быть связан с несколькими строками списка одновременно.
Чаще всего объекты нужны для того, чтобы хранить для каждого элемента дополнительную информацию. Например, в списке городов для каждого элемента можно дополнительно хранить население, площадь, административный статус и т. д. Для этого можно создать примерно такой класс:
TCityProps = class(TObject) Square: Longlnt; Population: Longlnt; Status: String/end;
Для того чтобы добавить к строке из списка объект, используется метод AddObject:
function AddObject(const S: string; AObject: TObject): Integer; virtual;