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

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

  • в поток:
  • procedure LoadFromStream (Stream: TStream); - заполняет список
    строками текста из указанного потока Stream;
  • procedure SaveTоStream (Stream: TStream); - сохраняет значение
    свойства Text в указанном потоке;
  • в файл (создавая поток и вызывая два предыдущих метода):
  • procedure LoadFromFile(const FileName: string); - заполняет список
    строками текста из указанного файла FileName;
  • procedure SaveToFile (const FileName: string); - сохраняет строки
    списка в файле с указанным именем;
  • в данные в формате текстового редактора (подряд расположенные строки,
    оканчивающиеся парой символов CR/LF (16-ричные коды
    $0D/$0A)).
    При этом метод:

        function GetText: PChar;
    

    выгружает строки в единый массив, где они разделены парами символов
    CR/LF; в конце такого
    массива ставится нулевой байт. Размер массива не может превышать 65520
    байт; поэтому строки выгружаются
    до тех пор, пока их суммарная длина не превосходит этого значения.

       
    Метод:

        procedure SetText (Text: PChar);
    

    читает строки из массива Text. Строки в массиве должны быть
    отделены друг от друга
    парой символов CR/LF; допускается и один символ LF
    (16-ричньй код $0А). Символы
    с кодами 0, $1A (<Ctrl>+<Z>) воспринимаются как конец текста.
    При этом прежнее
    содержимое набора уничтожается.

  •    
    К оглавлению

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



    Вы можете оставить комментарий, или Трекбэк с вашего сайта.

    Оставить комментарий