12165

КЛАССЫ ОБЩЕГО НАЗНАЧЕНИЯ

Лекция

Информатика, кибернетика и программирование

Классы общего назначения Как показывает практика в большинстве задач приходится использовать однотипные структуры данных: списки массивы множества и т.д. От задачи к задаче изменяются только их элементы а методы работы сохраняются. Например для любого списка нужны п...

Русский

2013-04-24

51 KB

3 чел.

Классы общего назначения

Как показывает практика, в большинстве задач приходится использовать однотипные структуры данных: списки, массивы, множества и т.д. От задачи к задаче изменяются только их элементы, а методы работы сохраняются. Например, для любого списка нужны процедуры вставки и удаления элементов. В связи с этим возникает естественное желание решить задачу "в общем виде", т.е. создать универсальные средства для управления основными структурами данных. Эта идея не нова. Она давно пришла в голову разработчикам инструментальных пакетов, которые быстро наплодили множество вспомогательных библиотек. Эти библиотеки содержали классы объектов для работы со списками, коллекциями (динамические массивы с переменным количеством элементов), словарями (коллекции, индексированные строками) и другими "абстрактными" структурами. Для среды Delphi тоже разработаны аналогичные классы объектов. Их большая часть сосредоточена в модуле Classes. Наиболее нужными для вас являются списки строк (TStrings, TStringList) и потоки (TSream, THandleSream, TFileStream, TMemoryStream и TBlobStream). Рассмотрим кратко их назначение и применение.

Классы для представления списка строк

Для работы со списками строк служат классы TStrings и TStringList. Они используются в библиотеке VCL повсеместно и имеют гораздо большую универсальность, чем та, что можно почерпнуть из их названия. Классы TStrings и TStringList служат для представления не просто списка строк, а списка элементов, каждый из которых представляет собой пару строка-объект. Если со строками не ассоциированы объекты, получается обычный список строк.

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

Свойства класса TStrings описаны ниже.

Count: Integer — число элементов в списке.

Strings[Index: Integer]: string — обеспечивает доступ к массиву строк по индексу. Первая строка имеет индекс, равный 0. Свойство Strings является основным свойством объекта.

Objects[Index: Integer]: TObject — обеспечивает доступ к массиву объектов. Свойства Strings и Objects позволяют использовать объект TStrings как хранилище строк и ассоциированных с ними объектов произвольных классов.

Text: string — позволяет интерпретировать список строк, как одну большую строку, в которой элементы разделены символами #13#10 (возврат каретки и перевод строки).

Наследники класса TStrings иногда используются для хранения строк вида Имя=Значение, в частности, строк INI-файлов (см. гл. 6). Для удобной работы с такими строками в классе TStrings дополнительно имеются следующие свойства.

Names[Index: Integer]: string — обеспечивает доступ к той части строки, в которой содержится имя.

Values[const Name: string]: string — обеспечивает доступ к той части строки, в которой содержится значение. Указывая вместо Name ту часть строки, которая находится слева от знака равенства, вы получаете ту часть, что находится справа.

Управление элементами списка осуществляется с помощью следующих методов:

Add(const S: string): Integer — добавляет новую строку S в список и возвращает ее позицию. Новая строка добавляется в конец списка.

AddObject(const S: string; AObject: TObject): Integer — добавляет в список строку S и ассоциированный с ней объект AObject. Возвращает индекс пары строка-объект.

AddStrings(Strings: TStrings) — добавляет группу строк в существующий список.

Append(const S: string) — делает то же, что и Add, но не возвращает значения.

Clear — удаляет из списка все элементы.

Delete(Index: Integer) — удаляет строку и ассоциированный с ней объект. Метод Delete, также как метод Clear не разрушают объектов, т.е. не вызывают у них деструктор. Об этом вы должны позаботиться сами.

Equals(Strings: TStrings): Boolean — Возвращает True, если список строк в точности равен тому, что передан в параметре Strings.

Exchange(Index1, Index2: Integer) — меняет два элемента местами.

GetText: PChar — возвращает все строки списка в виде одной большой нуль-терминированной строки.

IndexOf(const S: string): Integer — возвращает позицию строки S в списке. Если заданная строка в списке отсутствует, функция возвращает значение -1.

IndexOfName(const Name: string): Integer — возвращает позицию строки, которая имеет вид Имя=Значение и содержит в себе Имя, равное Name.

IndexOfObject(AObject: TObject): Integer — возвращает позицию объекта AObject в массиве Objects. Если заданный объект в списке отсутствует, функция возвращает значение -1.

Insert(Index: Integer; const S: string) — вставляет в список строку S в позицию Index.

InsertObject(Index: Integer; const S: string; AObject: TObject) — вставляет в список строку S и ассоциированный с ней объект AObject в позицию Index.

LoadFromFile(const FileName: string) — загружает строки списка из текстового файла.

LoadFromStream(Stream: TStream) — загружает строки списка из потока данных (см. ниже).

Move(CurIndex, NewIndex: Integer) — изменяет позицию элемента (пары строка-объект) в списке.

SaveToFile(const FileName: string) — сохраняет строки списка в текстовом файле.

SaveToStream(Stream: TStream) — сохраняет строки списка в потоке данных.

SetText(Text: PChar) — загружает строки списка из одной большой нуль-терминированной строки.

Класс TStringList добавляет к TStrings несколько дополнительных свойств и методов, а также два свойства-события для уведомления об изменениях в списке. Они описаны ниже.

Свойства:

Duplicates: TDuplicates — определяет, разрешено ли использовать дублированные строки в списке. Свойство может принимать следующие значения: dupIgnore (дубликаты игнорируются), dupAccept (дубликаты разрешены), dupError (дубликаты запрещены, попытка добавить в список дубликат вызывает ошибку).

Sorted: Boolean — если имеет значение True, то строки автоматически сортируются в алфавитном порядке.

Методы:

Find(const S: string; var Index: Integer): Boolean — выполняет поиск строки S в списке строк. Если строка найдена, Find помещает ее позицию в переменную, переданную в параметре Index, и возвращает True.

Sort — сортирует строки в алфавитном порядке.

События:

OnChange: TNotifyEvent — указывает на обработчик события, который выполнится при изменении содержимого списка. Событие OnChange генерируется после того, как были сделаны изменения.

OnChanging: TNotifyEvent — указывает на обработчик события, который выполнится при изменении содержимого списка. Событие OnChanging генерируется перед тем, как будут сделаны изменения.

Ниже приводится фрагмент программы, демонстрирующий создание списка строк и манипулирование его элементами:

var

 Items: TStrings;

 I: Integer;

begin

 // Создание списка

 Items := TStringList.Create;

 Items.Add('Туризм');

 Items.Add('Наука');

 Items.Insert(1, 'Бизнес');

 ...

 // Работа со списком

 for I := 0 to Items.Count - 1 do

   Items[I] := UpperCase(Items[I]);

 ...

 // Удаление списка

 Items.Free;

end;


 

А также другие работы, которые могут Вас заинтересовать

46565. Основные дидактические принципы методики обучения ИЗО в школе. Художественная педагогика и ее принципы 20.26 KB
  е всестороннее развитие и воспитание учащихся средствами пластических искусств принцип научности системности и последовательности в обучение использ знание законов композиции теории перспективы теории цветоведенья т. Воспитание как общественное и историческое явление. Воспитание – целенаправленный процесс формирования личности с помощью специально организованных педагогических воздействий в соответствии с определенным социальнопедагогическим идеалом.Воспитание как общественное явление характеризуется следующими основными чертами...
46566. Подготовка учителя к уроку изобразительного искусства. Конспект урока и способы его оформления 20.35 KB
  Вывод: подготовка учителя к уроку ИЗО позволяет: четко осознать цель стратегические и тактические задачи; целенаправленно разработать содержание и выбрать средства организационные формы работы; спрогнозировать результаты своей деятельности. В рамках учебной деятельности складываются психологические новообразования характеризующие наиболее значимые достижения в развитии младших школьников и являющиеся фундаментом обеспечивающим развитие на следующем возрастном этапе. Усвоение в ходе учебной деятельности основ теоретического сознания...
46567. Теоретические основы композиции и тематическое рисование на уроках изобразительного искусства 20.37 KB
  Теоретические основы композиции и тематическое рисование на уроках изобразительного искусства. Обучение теоретическим основам композиции подразумевает знакомство с законами композиции средствами: ритм динамич. Формы композиции: 1. Признаки композиции.
46568. Острый мастит. Классификация. Клиника, диагностика, дифференциальная диагностика. Лечение. Показания к операции 20.39 KB
  Эхинококковые кисты печени растут очень медленно хотя иногда достигают огромных размеров и содержат 10 л и более жидкости. Чаще они бывают одиночными и локализуются в правой доле печени по встречаются и множественные кисты. Состояние больных обычно не нарушается; II стадия наблюдаются различные симптомы связанные с увеличением размеров растущей кисты оказывающей давление па окружающие органы. У ряда больных прощупывается опухолевидное образование в верхней половине живота или увеличение печени; III стадия возникают симптомы...
46569. Формирование гражданского общества в России 20.46 KB
  Зачатки гражданского общества в России начали складываться во второй половине ХIХ столетия в результате реформ Александра II отмена крепостного права реформа местного самоуправления судебная административная и другие реформы. Все это ускорило необходимые процессы модернизации русского общества. С развитием буржуазных отношений формируются крупные промышленные предприятия банки и другие субъекты капиталистических отношений что создало экономическую основу гражданского общества.
46570. Термінологічні словники як основне джерело фахової інформації 20.5 KB
  Термінологічні словники як основне джерело фахової інформації. Особливу категорію складають термінологічні словники це словники які включають терміни що стосуються окремої галузі знань або навіть певної теми та їх пояснення Словник термінів теорії груп.
46571. Особенности проблемного обучения изобразительному искусству 20.55 KB
  Особенности проблемного обучения изобразительному искусству. План: понятие ПО Проблемная ситуация и пробл вопрос проблемные задачи по изо структура проблемного урока классификация метолов обучениявывод 1Проблемное обучение это тип развивающего обучения в котором сочетается систематическая самостоятельная поисковая деятельность учащихся с усвоением ими готовых выводов науки. 3 учебнопознавательные задачи приемытехники изображ предмета 4 Структура процесса проблемного обучения представляет собой систему связанных между собой и...
46572. Метод дисконтирования при оценке недвижимости 20.6 KB
  Метод дисконтированных денежных потоков наиболее универсальный метод позволяющий определить настоящую стоимость будущих денежных потоков. Метод ДДП позволяет оценить стоимость недвижимости на основе текущей стоимости дохода состоящего из прогнозируемых денежных потоков и остаточной стоимости. Расчет стоимости объекта недвижимости методом ДДП осуществляется в следующей последовательности: 1.
46573. Роль ХХ столетия в мировой истории 20.67 KB
  Не случайно в большинстве экономически развитых стран у власти чередуются представители либеральных и умеренно-социалистических группировок. Однако подобное обстоятельство не устранило саму конкурентную борьбу лишь изменило ее формы. И хотя экономическое положение США в мировом сообществе уже не так прочно как преждетем не менее очевидно что правящая элита США будет прилагать все усилия для сохранения исключительного положения своей страны. Впрочем мировое развитие идет в направлении возрастания политического веса малых стран в мировой...