Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2 семестр.doc
Скачиваний:
42
Добавлен:
27.05.2015
Размер:
777.73 Кб
Скачать

3.4. Класс tStrings

Класс TStrings является базовым классом для операций со строковыми данными и представляет собой контейнер для строк (коллекцию или массив строк). Для операций со строками класс TStrings предоставляет соответствующие свойства и методы. От класса TStrings происходит большое количество производных классов, например, TStringList.

Визуальные компоненты, способные работать со списками строк, имеют свойства, которые являются массивами строк, содержащихся в этих компонентах. Например, для списков ListBох и DBListBox и для групп зависимых переключателей RadioGroup и DBRadioGroup таким свойством является Items, а для многострочных редакторов Memo и DBMemo – Lines. Указанные свойства для ListBox и Memo доступны при разработке и при выполнении приложения, а для визуальных компонентов DBListBox и DBMemo, связанных с данными, – только при выполнении приложения.

Каждый элемент списка является строкой, к которой можно получить доступ по ее номеру в массиве строк. Отсчет элементов списка начинается с нуля. Например, для обращения к первому элементу Items нужно указать Items[0], ко второму – Items[1] и т.д. При операциях с отдельными строками нельзя обращаться к несуществующему элементу. Например, если список содержит три строки, то попытка работы с десятой строкой приведет к исключительной ситуации.

Свойство Count типа Integer задает число элементов в списке. Поскольку первый элемент списка имеет нулевой номер, то номер последнего элемента равен Count-l.

Пример присваивания элементам списка ListBox1 новых значений:

var n: integer;

for n := 0 to ListBox1.Items.Count – 1 do

ListBox1.Items[n] := 'Строка номер ' + IntToStr(n);

Методы Delete и Clear используются для удаления элементов списка.

Процедура Delete (Index: Integer) удаляет элемент с номером, заданным параметром Index. При попытке удаления несуществующей строки сообщение об ошибке не выдается, но метод Delete не срабатывает.

Пример удаления элемента списка:

procedure TForm1.Button2Click(Sender: TObject);

begin

ComboBox1. Items. Delete (4); //удаление пятой строки из комбинированного списка

end; //ComboBox1 при нажатии кнопки Button2

Процедура Clear очищает список, удаляя все его элементы.

Пример очистки элементов списка:

procedure TForm1.btnClearPersonalListClearClick(Sender: TObject)

begin

lbPersonal.Items.Clear; //очистка списка lbPersonal при нажатии кнопки btnClearPersonalList

end;

Методы Add и Insert служат для добавления/вставки строк в список.

Функция Add (const S: string): Integer добавляет заданную параметром S строку в конец списка, а в качестве результата возвращает положение нового элемента в списке. Процедура Insert (Index: Integer; const S: string) вставляет строку S на позицию с номером, определяемым параметром Index. При этом элементы списка, находившиеся до операции вставки в указанной позиции и ниже, смещаются вниз.

Пример добавления к комбинированному списку ComboBox1 строки:

procedure TForm1.Button1Click(Sender: TObject)

begin

ComboBox1.Items.Add('Нажата кнопка Button1');

end;

Методы AddStrings и Assign используются для согласования содержимого списков. Оба метода позволяют при вызове увеличить содержимое списка более, чем на один элемент.

Функция AddObject (const S: String; AObject: TObject): Integer добавляет в конец списка строку S и связанную с ней ссылку на объект, указываемую параметром AObject.

Процедура Assign (Source: TPersistent) присваивает один объект другому, при этом объекты должны иметь совместимые типы. Применительно к спискам в результате выполнения процедуры происходит копирование текста из одного списка в другой с заменой содержимого. Если размеры списков (число элементов) не совпадают, то после замены число элементов заменяемого списка становится равным числу элементов копируемого списка.

Функция Equals (Strings: TStrings): Boolean используется для определения, содержат ли два списка строк одинаковый текст. Если списки равны по длине и совпадают все их соответствующие элементы, то функция возвращает значение True.

Пример согласования двух списков по содержанию:

if not(ListBox2.Items.Equals(ListBox1.Items)) then

begin

ListBox2.Clear;

ListBox2.Items.AddStrings(ListBox1.Items);

end;

или

if not(ListBox2.Items.Equals(ListBox1.Items)) then

ListBox2.Items.Assign(ListBox1.Items);

Если списки не совпадают, то содержимое списка ListBox1 копируется в список ListBox2, в результате содержимое списков становится одинаковым.

Процедура Indexof (const S: String): Integer определяет, содержится ли строка S в списке. В случае успешного поиска процедура возвращает номер позиции найденной строки в списке; если строковый элемент не найден, то возвращается значение -1.

Пример добавления отсутствующей строки:

if MyList.IndexOf(MyObject)=-1 then MyList.Add(MyObject);

Процедура SaveToFile (const FileName: string) сохраняет строковые элементы списка в файле. Если заданный файл отсутствует на диске, то он создается. Символы файла кодируются в системе ANSI.

Пример сохранения строковых элементов списка в файле:

ListBox3.SaveToFile('A:\PRIMER\fio.txt');

Процедура LoadFromFile (const FileName: string) заполняет список содержимым указанного текстового файла, при этом предыдущее содержимое списка очищается. Если заданный файл отсутствует на диске, то возникает исключительная ситуация.

Пример загрузки содержимого списка:

procedure TForm1.FormCreate (Sender: TObject);

begin

ComboBox2.Items.LoadFromFile('A:\Result\data.txt');

end;

При конструировании приложения изменение списка строк выполняется с помощью редактора String List editor (Строковый редактор). Его вызов выполняется через Инспектор Объектов двойным щелчком мыши в области значения свойства типа TStrings.