Шаг 22.
Класс TStrings

    На этом шаге мы рассмотрим свойства, методы и события класса TStrings.

Свойства класса TStrings
Методы класса TStrings

    Многофункциональный класс, предназначенный для хранения текстовых строк и связанных с ними объектов (любых потомков TObject). TStrings - абстрактный класс; он только описывает методы работы с наборами строк и сопутствующих им объектов, но как именно они хранятся, на его уровне не определено. Его потомки очень многочисленны; они играют основную роль в компонентах-списках (TListBox, TComboBox), редакторе (TMemo) и других.

    Так что чаще всего приходится иметь дело с TStrings как со свойством одного из компонентов. В дальнейшем экземпляры этого класса и порожденных от него классов будем называть наборами строк. Для создания собственных наборов строк вне компонентов предназначен потомок TStrings - TStringList, который будет рассмотрен на следующем шаге.

    Таким образом, класс TStrings содержит методы и свойства, позволяющие манипулировать со списками строк:

Свойства класса TStrings

    Ниже приведен список основных свойств, определенных в TStrings.
Таблица 1. Свойства класса TStrings
Свойство Описание
property Capacity: Integer; Указывает число строк, которые может содержать список. В классе TStrings чтение Capacity возвращает значение Count, а запись значения Capacity ничего не изменяет в списке. Но в некоторых классах, производных от TStrings, свойство Capacity позволяет заранее выделить память для добавления нескольких строк.
property CommaText: String; Возвращает текст, в котором отдельные строки объединены в одну строку формата SDF (System Data Format). Отдельные исходные строки разделяются в итоговой строке запятыми. Каждая строка, если в ней имеются пробелы, заключается в двойные кавычки. Если в исходных строках были двойные кавычки, то они дублируются (получается два следующих друг за другом символа).
property Count: Integer; Число строк в списке. Свойство только для чтения.
property Names [Index: Integer]: String; Применяется для списков, имеющих структуру "Имя=Значение". Такую структуру имеют, например, файлы INI. Свойство Names возвращает Имя, использованное в строке с указанным индексом. Если строка не имеет форму "Имя=Значение", то возвращается пустая строка. Свойство только для чтения.
property Objects [Index: Integer]: TObject; Возвращает объект, связанный с указанной строкой свойства Strings. В классе TStrings свойство Objects не используется, но может применяться в некоторых классах, производных от TStrings.
property Strings[Index: Integer]: String; Текст строки с указанным индексом. Индекс первой строки равен 0.
property Text: String; Представляет весь список как одну строку, внутри которой используются разделители CR/LF ("перевод строки - возврат каретки").
property Values [const Name: String]: String; Применяется для списков, имеющих структуру "Имя=Значение". Такую структуру имеют, например, файлы INI. Свойство Values возвращает Значение, использованное в строке с указанным именем Name. Если заданное имя Name не найдено, то возвращается пустая строка. При записи: если строка, содержащая параметр Name, найдена - ее значение после знака "=" заменяется новым значением, если нет - строка, добавляется. Если существующему параметру присваивается пустая строка (Values[Name]:='';), то он удаляется из набора строк.

    К оглавлению

   

Методы класса TStrings

    Методы класса приведены в следующей таблице:

   
Таблица 2. Методы класса TStrings
Метод Описание
procedure AddStrings (Strings: TStrings); Добавляет в список группу строк из другого объекта Strings типа TStrings.
procedure Assign (Source: TPersistent); Уничтожает прежнее содержимое набора и подставляет вместо него Source, если источник имеет тип TStrings. В противном случае возникает исключительная ситуация EConvertError.
procedure BeginUpdate;
procedure EndUpdate;
Пара процедур, которые устанавливают и сбрасывают флаг обновления набора. Между ними, для ускорения работы, нужно заключать все операции по копированию, удалению и т. д. большого количества элементов.
procedure Clear; Очищает список.
procedure Insert (Index: Integer; const S: string); Вставляет строку S под номером Index.
procedure Delete (Index: Integer); Удаляет строку с номером Index.
function IndexOf (const S: string): Integer; Возвращает индекс (номер в наборе) строки S. Если она не найдена, функция возвращает -1.
function IndexOfObject (AObject: TObject): Integer; Возвращает индекс первой строки, связанной с заданным объектом. Если такой строки нет в списке, возвращается -1.
function IndexOfName (const Name: String): Integer; Применяется для списков, имеющих структуру "Имя=Значение". Возвращает номер строки, в которой Имя равно заданному значению Name. Если такой строки нет в списке, возвращается -1.
function Equals (Strings: TStrings): Boolean; Сравнивает строки вызвавшего его объекта со строками объекта Strings и возвращает True в случае равенства (сравниваются число строк и все строки попарно).
function Add (const S: string): Integer; Добавляет строку S в конец набора и в случае успеха возвращает присвоенный ей индекс (он должен быть равен значению Count до добавления строки).
function AddObject (const S: string; AObject: TObject): Integer; Добавляет в список строку и связанный с ней объект. Возвращает индекс добавленной строки и объекта.
procedure Append (const S: string); Добавляет строку в конец списка. Метод аналогичен Add, но не возвращает индекс строки.
procedure Exchange (Index1, Index2: Integer); Меняет местами пары "строка-объект" с индексами Index1 и Index2.
procedure Move (CurIndex, NewIndex: Integer) ; Перемещает пару "строка-объект" с позиции CurIndex в позицию NewIndex.
procedure InsertObject (Index: Integer; const S: string; AObject: TObject); Вставляет объект AObject и соответствующую ему строку S в набор под индексом Index.

    Следующие шесть методов предназначены для экспорта/импорта наборов строк:

    К оглавлению

    На следующем шаге мы рассмотрим состав класса TStringList.




Свойства класса TStrings Методы класса TStrings




Предыдущий шаг Содержание Следующий шаг