Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OЗП в delphi.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
105.77 Кб
Скачать

13.3. Класи tstrings, tstringlist – набори рядків й об’єктів

Абстрактний клас TStrings інкапсулює поля й методи для роботи з наборами рядків. Від нього породжені численні спеціалізовані нащадки, що обслуговують набори рядків у таких компонентах, як TComboBox, TListBox, TRichEdit та ін.

Особливістю TStrings і його нащадків є та обставина, що елементами наборів служать пари рядок-об'єкт, у яких рядок - це рядок символів, а об'єкт - об'єкт будь-якого класу Delphi. Така подвійність дозволяє зберігати в TStrings об'єкти з текстовими примітками, упорядковувати об'єкти, відшукувати потрібний об'єкт за його описом та ін. Крім цього, в якості об'єкту може використовуватися потомок від TStrings, що дозволяє створювати багатовимірні набори рядків.

Потомком абстрактного класу TStrings є повно функціональний, клас TStringList, призначений для роботи з наборрами рядків.

Клас TStringList містить засоби обслуговування рядків виду Name=Value, де Name - ім'я параметра, Value - його значення.

Властивості класу TStringList

Властивості

Призначення

Proporty Capacity: Integer;

Поточна ємність набору рядків.

Property CommaText: String;

Служить для установки або одержання всього набору рядків у вигляді єдиного рядка з лапками й комами.

Property Count: Integer;

Поточна кількість рядків у наборі.

Property Duplicates: TDuplicates;

Властивість, що дозволяє управляти можливістю розміщення в наборі двох і більше ідентичних рядків.

Property Names[Index: integer] : String;

Для рядка з індексом Index повертає частина Name, якщо це рядок виду Name-Value, у противному випадку повертає порожній рядок

Property Objects[Index: Integer] : TObject;

Відкриває доступ до об'єкта, зв’заного з рядком з індексом Index.

Property Sorted: Boolean;

Ознака необхідності сортування рядків за абеткою.

Property Strings[Index: Integer] : String;

Доступ до рядка з індексом Index.

Property StringsAdapter:

TStringsAdapter;

Ця властивість використовується тільки при розробці компонентів, що відповідають стандарту Active.

Property Text: String;

Інтерпретує набір рядків у вигляді одного довгого рядка із внутрішніми роздільниками EOLN між окремими рядками набору.

Property OnChange:TNotifyEvent;

Визначає реакцію на зміну набору рядків. Виникає після останньої зміни.

Набір рядків технічно реалізується подібно до списку TList - у вигляді масиву вказівників. Властивість Capacity показує довжину цього масиву, а властивість Count – поточну кількість елементів. Якщо при додавані чергового елемента Capacity виявиться менше ніж Count, то відбувається автоматичне розширення масиву. При цьому в динамічній пам'яті резервується місце для розміщення Capacity+16 вказівників, у новий масив переписується вміст старого масиву, після чого старий масив знищується. Якщо відома кількість елементів у створюваному наборі рядків, то має сенс заздалегідь установити властивість Capacity, щоб скоротити непродуктивні витрати на багаторазові розширення масиву вказівників.

Властивість CommaText інтерпретує вміст набору рядків у вигляді одного довгого рядка з елементами виду "Перший рядок", "Другий рядок", "Третій рядок" і т.д. (кожен рядок набору заклечається у в подвійні лапки й відокремлюється від сусіднього рядка комою; якщо в рядку зустрічається символ «"», то він подвоюється).

Властивість Text інтерпретує вміст набору у вигляді одного довгого рядка з елементами, розділеними стандартною ознакою EOLN (# 13 # 10).

При значені властивості Sorted=False рядки набору автоматично сортуються за абеткою. При цьому властивість Duplicates розв’язує колізію, пов'язану з додаванням у набір ідентичних рядків. Якщо Duplicates= duIgnore, ідентичний рядок відкидається й повідомлення не виводиться; якщо Duplicates=duError, збуджується виключення EListError; значення Duplicates=duAccept дозволяє вставляти в набір скільки завгодно ідентичних рядків.

Методи класу TStringList

Методи

Призначення

Function Add(const S: String): Integer;

Додає рядок у набір даних і повертає їх індекс.

function AddObject(const S: string; aObject: TObject): Integer;

Додає рядок й об'єкт у набір даних.

Procedure AddStrings( Strings:TStrings);

Додає до поточного набору новий набір рядків.

Procedure Assign(Source: TPersistent);

Знищує колишній набір рядків і завантажує з Source новий набір. У випадку невдачі виникає виключення EConvertError.

procedure Clear;

Очищає набір даних і звільняє пов'язану з ним пам'ять.

procedure Delete(Index: Integer) ;

Знищує елемент набору з індексом Index і звільняє пов'язану з ним пам'ять.

function Equals(Strings: TStrings): Boolean;

Порівнює по рядках поточний набір даних з набором Strings і повертає True, якщо набори ідентичні.

procedure Exchange(Indexl, Index2: Integer);

Міняє місцями рядки з індексами Indexl й Index2. Якщо об'єкт сортується (Sorted - True), викликає виключення EStringListError.

function Find(const S: String; var Index: Integer): Boolean;

Шукає в наборі рядок S й у випадку успіху в параметрі Index повертає індекс.

Function GetText: PChar;

Завантажує рядки з єдиного масиву, у якому вони відокремлюються один від одного ознакою EOLN.

function IndexOf(const S: String): Integer;

Для рядка S повертає індекс або -1, якщо такого рядка у наборі немає.

function IndexOfObject(aObject: TObject): Integer;

Для об'єкта aObject повертає індекс або -1, якщо такого об'єкта в наборі немає.

procedure Insert(Index: Integer; const S: String);

Вставляє рядок у набір і присвоює йому індекс Index.

procedure InsertObject(Index: Integer; const S: String; aObject: TObject)

Вставляє рядок й об'єкт у набір і присвоює їм індекс Index.

procedure LoadFromFile(const FileName: String);

Завантажує набір з файлу.

procedure Move(CurIndex, NewIndex: Integer);

Переміщає рядок з положення CurIndex у положення NewIndex.

procedure SaveToFile(const FileName: String);

Зберігає набір у файлі.

procedure SaveToStream(Stream: TStream);

Зберігає набір у потоці.

procedure SetText(Text: PChar);

Вивантажує рядки у єдиний масив, у якому вон відокремлюються один від другого ознакою EOLN.

Function Add(const S: String): Integer;

Додає рядок у набір даних і повертає їх індекс.

function AddObject(const S: string; aObject: TObject): Integer;

Додає рядок й об'єкт у набір даних.

Procedure AddStrings( Strings:TStrings);

Додає до поточного набору новий набір рядків.

procedure Assign(Source: TPersistent);

Знищує колишній набір рядків і завантажує з Source новий набір. У випадку невдачі виникає виключення EConvertError.

procedure Clear;

Очищає набір даних і звільняє пов'язану з ним пам'ять.

procedure Delete(Index: Integer) ;

Знищує елемент набору з індексом Index і звільняє пов'язану з ним пам'ять.

function Equals(Strings: TStrings):

Boolean;

Порівнює по рядках поточний набір даних з набором Strings і повертає True, якщо набори ідентичні.

procedure Exchange(Indexl, Index2:

Integer);

Міняє місцями рядки з індексами Indexl й Index2. Якщо об'єкт сортується (Sorted - True), викликає виключення EStringListError.

function Find(const S: String; var Index: Integer): Boolean;

Шукає в наборі рядок S й у випадку успіху в параметрі Index повертає індекс.

Function GetText: PChar;

Завантажує рядки з єдиного масиву, у якому вони відокремлюються один від одного ознакою EOLN.

function IndexOf(const S: String): Integer;

Для рядка S повертає індекс або -1, якщо такого рядка у наборі немає.

function IndexOfObject(aObject:

TObject): Integer;

Для об'єкта aObject повертає індекс або -1, якщо такого об'єкта в наборі немає.

procedure Insert(Index: Integer; const S: String);

Вставляє рядок у набір і присвоює йому індекс Index.

procedure InsertObject(Index: Integer; const S: String; aObject: TObject)

Вставляє рядок й об'єкт у набір і присвоює їм індекс Index.

procedure LoadFromFile(const FileName: String);

Завантажує набір з файлу.

procedure Move(CurIndex, NewIndex: Integer);

Переміщає рядок з положення CurIndex у положення NewIndex.

procedure SaveToFile(const FileName: String);

Зберігає набір у файлі.

procedure SaveToStream(Stream:

TStream);

Зберігає набір у потоці.

procedure SetText(Text: PChar);

Вивантажує рядки у єдиний масив, у якому вон відокремлюються один від другого ознакою EOLN.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]