TStrings и TStringLists
TStrings и TStringLists
Материално съдържание
Низовете и съответно обектите могат да бъдат достъпни чрез свойства:
свойство Strings[Индекс: Integer]: низ;
свойство Обекти [Индекс: Цяло число]: TObject;
Първото е свойство на вектора по подразбиране. Общият брой двойки в списъка е равен на стойността на имота:
свойство Count: Integer;
Класът TStrings също е проектиран да съхранява двойки „параметър=стойност“, например в инициализационни (.INI) файлове. Тази функция се реализира от следното свойство:
Стойности на свойство [const Име: низ]: низ;
При достъп до това свойство за четене се търси низ, съдържащ подниза (параметър) Име и символа '='. Ако бъде намерено, се връща каквото и да е в този ред след '='. Ако не, ValuesfName] е равно на празния низ. При запис: ако низът, съдържащ параметъра Name, бъде намерен, неговата стойност след '=' се заменя с нова стойност, ако не, низът се добавя. Ако празен низ е присвоен на съществуващ параметър (Valu-es[Name] := ";), тогава той се премахва от набора от низове.
процедура BeginUpdate; процедура EndUpdate; Двойка процедури, които задават и нулират зададения флаг за актуализиране. Между тях, за да ускорите работата, трябва да включите всички операции за копиране, изтриване и т.н. на голям брой елементи.
процедура Clear; Извършва цялостно почистване на комплекта.
процедура Insert(Индекс: Цяло число; const S: низ); Вмъква низ S в индекс Index.
процедура Delete(Индекс: Цяло число); Изтрива реда с индекс.
функция IndexOf(const S: низ): Цяло число; Връща индекса (числото в набора) на низа S. Ако не бъде намерен, функцията връща -1.
функция IndexOfObject(AObject: TObject):цяло число; Връща индекса на обект в набор. Връща -1 при грешка.
функция Equals(Strings: TStrings): Boolean; Сравнява низовете на обекта, който го е извикал, с низовете на обекта Strings и връща True, ако са равни (броят на низовете и всички низове се сравняват по двойки).
функция Add(const S: string): Integer - Добавя низа S в края на набора и, ако е успешен, връща присвоения му индекс (той трябва да е равен на стойността на Count преди добавянето на низа).
функция AddObject(const S: низ; AObject: TObject): Цяло число; Добавя низ, съчетан с обект. Връща същото като метода Add.
процедура Exchange(Indexl, Index2: Integer); Разменя двойките низ+обект с индекси Indexl и Index2.
процедура Move(CurIndex, NewIndex: Integer); Премества двойката низ+обект от позиция CurIndex в позиция NewIndex.
процедура InsertObject(Индекс: Цяло число; const S: низ; AObject: TObject); Вмъква AObject и съответния му низ S в набора при индекс Index.
Осигурени са шест метода за експортиране/импортиране на набори от редове:
процедура LoadFromStream(Поток: TStream);
процедура SaveToStream(Поток: TStream);
b) към файл (чрез създаване на поток и извикване на двата предишни метода):
процедура LoadFrornFile (const FileName: strings-procedure SaveToFile(const FileName: string);
процедура AddScrings(Strings: TStrings); Добавя друг набор от низове в края на набора.
процедура Assign (Източник: TPersistent); Унищожава предишното съдържание на набора и го заменя с източник, ако източникът е от тип TStrings. В противен случай се хвърля изключение EConvertError.
функция GetText: PChar;
разтоварва низовете в единичен масив, където те са разделени от двойки знациCR/LF; нулев байт се поставя в края на такъв масив. Размерът на масива не може да надвишава 65520 байта; следователно низовете се разтоварват, докато общата им дължина не надвишава тази стойност.
процедура SetText(Текст: PChar);
чете редове от текстовия масив. Низовете в масива трябва да бъдат разделени един от друг с двойка символи CR/LF; един знак LF (шестнадесетичен код $OA) също е разрешен. Знаците с кодове 0, $lA( + ) се възприемат като край на текста. В този случай предишното съдържание на комплекта се унищожава.
Този клас комбинира свойствата на TStrings и TList по най-простия начин - указател към обект и съответния низ се комбинират в запис, указателят към който се съхранява в списъка. Много виртуални методи на TStrings са предефинирани в класа: Add, Clear, Delete, Exchange, IndexOf, Insert; той е напълно функционален и можете да създавате екземпляри на TStringList във вашата програма, за да работите с колекции от низове и обекти (в допълнение към тези, които вече са в компонентите).
В допълнение към тези, наследени от TStrings, са дефинирани допълнителни полезни методи и свойства:
функция Find(const S: низ; var Index: Integer): Boolean; Методът търси низа S в набора и при успех връща резултата True и неговия индекс в параметъра Index.
свойство Сортирано: Boolean; Свойството е знак за сортирани елементи (сортирането се извършва чрез сравнение символ по символ на низове). Задаването на Sort := True извиква процедурата за сортиране, която също може да бъде извикана изрично с метод:
процедура Сортиране; Опит за добавяне или вмъкване на елемент в сортиран списък хвърля изключение EListError; в този случай свойството Sorted трябва да бъде зададено на False, преди да може да се извърши действието.
свойство Дубликати: TDuplicates; TDuplicates = (двойно игнориране,dupAccept, dupError); Свойството определя какво се случва, когато се опитате да добавите дубликат на съществуващ ред към списъка: duplgnore - добавянето се игнорира (отхвърля); dupError - добавянето води до изключение EListError; dupAccept - разрешени са дублирани низове. В този случай при търсене в несортиран списък не се определя кой от редовете ще бъде открит първи.
свойство OnChange: TNotifyEvent; свойство OnChanging: TNotifyEvent; Две свойства, предоставени на потребителя, за да определи реакцията си към промените в данните. Събитието OnChanging се извиква в много от методите, обсъдени по-горе, преди да бъде направена първата промяна, OnChange след последната.