Класс 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.