Класс TStringList
Класс TStringList обеспечивает реальное использование списков строк в приложении. По существу, класс представляет собой оболочку вокруг динамического массива значений списка, представленного свойством strings. Объявление свойства (унаследованное от TStrings) выглядит так:
property Strings[Index: Integer]: string read Get write Put; default;
Для работы со свойством используются внутренние методы Get и Put, в которых применяется внутренняя переменная FList:
type PStringltem = 'TStringltem; TStringltem = record FString: string; FObject: TObject; end; PStringltemList = ^TStringItemList; TStringltemList = array[0..MaxListSize] of TStringltem; FList: PStringltemList;
Из ее объявления видно, что список строк представляет собой динамический массив записей TStringItem. Эта запись позволяет объединить саму строку и связанный с ней объект.
Максимальный размер списка ограничен константой:
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. При этом все указанные элементы смещаются на одну позицию вниз.