Максимальный размер списка ограничен константой
MaxListSize = Maxint div 16;
значение которой после нехитрых вычислений составит 134 217 727. Таким образом, видно, что строковый список Delphi теоретически конечен, хотя на практике гораздо чаще размер списка ограничивается размером доступной памяти.
Обращение к отдельному элементу списка может осуществляться через свойство strings таким образом:
SomeStrings.Strings[i] := Editl.Text; или тек:
SomeStrings[i] := Editl.Text;
Оба способа равноценны.
При помощи простого присваивания можно задавать новые значения только тогда, когда элемент уже создан. Для добавления нового элемента используются методы Add И AddStrings.
Функция
function Add (const S: string) : Integer;
добавляет в конец списка новый элемент, присваивая ему значение s и возвращая индекс нового элемента в списке.
Метод
procedure Append (const S: string);
просто вызывает функцию Add Единственное отличие заключается в том, что метод не возвращает индекс нового элемента.
Метод
procedure AddStrings(Strings: TStrings);
добавляет к списку целый набор новых элементов, которые должны быть заданы другим списком, передаваемым в параметре strings.
При необходимости можно добавить новый элемент в произвольное место списка. Для этого применяется метод
procedure Insert(Index: Integer;
const S: string);
который вставляет элемент s на место элемента с индексом index. При этом все указанные элементы смещаются на одну позицию вниз.
Для удаления элемента списка используется метод
procedure Delete(Index: Integer); Метод
prcce±ire Move (Cur index, Newindex: Integer);
перемещает элемент, заданный индексом curindex, на новую позицию, заданную ИНДЕКСОМ Newindex.
А метод
procedure Exchange(Indexl, Index2: Integer);
меняет местами элементы с индексами indexl и mdex2.
Довольно часто в списках размещается строковая информация следующего вида:
'Name=Value'
В качестве примера можно привести строки из файлов INI или системного реестра. Специально для таких случаев в списке предусмотрено представление строк в двух свойствах. В свойстве Names содержится текст до знака равенства. В свойстве values содержится текст после знака равенства по умолчанию. Однако символ-разделитель можно заменить на любой другой, использовав свойство
property NameValueSeparator: Char;
Доступ к значениям свойства values осуществляется по значению. Например, если в списке есть строка
City=S^int-Petersburg то значение свойства value будет равно
Value [' city' ] = ' Särnt-Fetershitg'
Кроме этого, значение свойства value можно получить, если известен его индекс:
property ValueFormlndex [Index: Integer]: string;
Как видно из объявления внутреннего списка FList (см. выше), с каждым элементом списка можно связать любой объект. Для этого используется свойство
property Objects[Index: Integer]: TDbject;
Свойство strings элемента и свойство objects связанного с ним объекта имеют одинаковые индексы. Если строка не имеет связанного объекта, то свойство objects равно Nil. Один объект может быть связан с несколькими строками списка одновременно.