Справочник по компонентам Дельфи

Автор: Пользователь скрыл имя, 06 Февраля 2013 в 01:52, аттестационная работа

Описание работы

Класс TList -- универсальный список. Он представляет собой массив нетипированных указателей и поэтому годится для хранения набора любых, в том числе разнотипных, данных и объектов. При добавлении/удалении в список данные не создаются и не уничтожаются -- эта обязанность лежит на программисте. Приведем доступные ему методы и свойства класса.

Работа содержит 1 файл

componens.doc

— 980.33 Кб (Скачать)

DELPHI

 

Справочник по компонентам.

 

Класс TList

Класс TList -- универсальный список. Он представляет собой массив нетипированных указателей и поэтому годится для хранения набора любых, в том числе разнотипных, данных и объектов. При добавлении/удалении в список данные не создаются и не уничтожаются -- эта обязанность лежит на программисте. Приведем доступные ему методы и свойства класса:

property Items[Index: Integer]: Pointer;

Возвращает указатель на содержимое элемента списка с индексом Index. Это свойство является векторным свойством, принимаемым по умолчанию, и его имя можно при записи опускать (см. раздел "Свойства").

property Count: Integer;

Определяет число элементов в списке.

property Capacity: Integer;

Определяет максимальное число элементов в списке. Оно может изменяться как явно -- пользователем, так и при добавлении элементов в список, в том случае, когда Count>=Capacity. Максимальная емкость списка -- 16380 элементов.


 

Управляют списком следующие методы:

function Add(Item: Pointer): Integer;

Добавляет в конец списка элемент, который будет равен Item (т. е. указывать на те же данные).

function Remove(Item: Pointer): Integer;

Удаляет из списка элемент, который равен Item.

procedure Insert(Index: Integer; Item: Pointer) ;

Вставляет элемент, равный Item, перед элементом с индексом Index.

procedure Delete(Index: Integer);

Удаляет из списка элемент с индексом Index.

procedure Clear;

Очищает список, устанавливая величины Count и Capacity в 0.

procedure Exchange(Indexl, Index2: Integer);

Меняет местами элементы списка с индексами Indexl и Index2.

function Expand: TList;

При соблюдении равенства Count=Capacity расширяет список. При емкости списка менее пяти элементов, он по умолчанию расширяется на четыре элемента, при пяти-восьми -- на восемь, более восьми -- на шестнадцать.

function First: Pointer; function Last: Pointer;

Возвращают значения первого п последнего (с индексом Count-1) элементов списка соответственно.

function IndexOf(Item: Pointer): Integer;

Возвращает индекс элемента, равного Item.

procedure Move(CurIndex, Newlndex: Integer) ;

Перемещает элемент списка с положения Curlndex в положение Newlndex.

procedure Pack;

Упаковывает список, сдвигая элементы к началу на пустующие места.


 

Наконец, если приведенных методов почему-либо недостаточно, то свойство

(rc; property List: pPointerList;

pPointerList = ^TPointerList;

TPointerList = array[0..65520 div SizeOf(Pointer)] of Pointer;

возвращает указатель непосредственно на список указателен ((ко) означает, что свойство доступно только для чтения).

2Л3.2. Класс TStrings

Многофункциональный класс, предназначенный для хранения текстовых строк и связанных с ними объектов (любых потомков TObject). TStrings -- абстрактный класс; он только описывает методы работы с наборами строк и сопутствующих им объектов, но как именно они хранятся, на его уровне не определено. Его потомки очень многочисленны; они играют основную роль в компонентах-списках (TListBox, TComboBox), редакторе (TMemo) и других. Так что вам чаще всего придется иметь дело с TStrings как со свойством одного из компонентов. В дальнейшем экземпляры этого класса и порожденных от него классов мы-будем называть наборами строк. Для создания собственных наборов строк вне компонентов предназначен потомок TStrings -- TStringList, который будет рассмотрен ниже.

К строкам и объектам соответственно можно получить доступ через свойства:

property Strings[Index: Integer]: string;

property Objects[Index: Integer]: TObject;

Первое из них является векторным свойством, принимаемым по умолчанию. Общее количество пар в списке равно значению свойства:

(Ro'l property Count: Integer;

Класс TStrings также предназначен для хранения пар вида 'параметр=значение', например, в файлах инициализации (.INI). Эту возможность реализует следующее свойство:

property Values[const Name: string]: string;

При обращении к этому свойству для чтения ищется строка, содержащая подстроку (параметр) Name и символ '='. Если она найдена, возвращается то, что находится в этой строке после '='. Если нет, ValuesfName] равно пустой строке. При записи: если строка, содержащая параметр Name, найдена -- ее значение после '=' заменяется новым значением, если нет -- строка добавляется. Если существующему параметру присваивается пустая строка (Valu-es[Name] := ";), то он удаляется из набора строк.

Методы класса приведены в таблице:

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 Equals(Strings: TStrings): Boolean;

Сравнивает строки вызвавшего его объекта со строками объекта Strings и возвращает True в случае равенства (сравниваются число строк и все строки попарно).

function Add(const S: string): Integer-

Добавляет строку S в конец набора и в случае успеха возвращает присвоенный ей индекс (он должен быть равен значению Count до добавления строки).

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

Добавляет строку в паре с объектом. Возвращает то же, что и метод Add.

procedure Exchange(Indexl, Index2: Integer);

Меняет местами пары строка+объект с индексами Indexl и Index2.

procedure Move(Curlndex, Newlndex: Integer);

Перемещает пару строка+объект с позиции Curlndex в позицию Newlndex.

procedure InsertObject(Index: Integer; const S: string; AObject: TObject);

Вставляет объект AObject и соответствующую ему строку S в набор под индексом Index.


 

Шесть методов предназначены для экспорта/импорта наборов строк:

а) в поток:

procedure LoadFromStream(Stream: TStream);

procedure SaveToStream(Stream: TStream);

б) в файл (создавая поток и вызывая два предыдущих метода):

procedure LoadFrornFile (const FileName: strings-procedure SaveToFile(const FileName: string);

в) в данные в формате текстового редактора (подряд расположенные строки, оканчивающиеся парой символов CR/LF (16-ричные коды SOD/SOA)).

procedure AddScrings(Strings: TStrings! ;

Добавляет в конец набора другой набор Strings.

procedure Assign!Source: T'Persisier-t l ;

Уничтожает прежнее содержимое набора и подставляет вместо него Source, если источник имеет тип TStrings. В противном случае возникает исключительная ситуация EConvertError.


 

При этом метод

function GetText: PChar;

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

Метод

procedure SetText(Text: PChar);

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

2.13.3. Класс TStringlist

Этот класс объединяет в себе свойства TStrings и TList простейшим способом -- указатель на объект и соответствующая строка объединяются в запись, указатель на которую хранится в списке. В классе переопределены многие виртуальные методы TStrings: Add, Clear, Delete, Exchange, IndexOf, Insert; он является полностью функциональным и вы можете создавать экземпляры TStringList в своей программе для работы с наборами строк и объектов (помимо тех, которые уже есть в компонентах).

Кроме унаследованных от TStrings, определены дополнительно полезные методы и свойства:

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

Метод ищет в наборе строку S и в случае успеха возвращает результат True, а в параметре Index -- ее индекс.

property Sorted: Boolean;

Свойство -- признак отсортированности элементов (сортировка осуществляется через посимвольное сравнение строк). Установка Sort := True вызывает процедуру сортировки, которую можно вызвать и явно при помощи метода:

procedure Sort;

Попытка добавить или вставить элемент в отсортированный список вызывает исключительную ситуацию EListError; в этом случае до выполнения действия свойству Sorted нужно присвоить значение False.

property Duplicates: TDuplicates; TDuplicates = (duplgnore, dupAccept, dupError);

Свойство определяет, что происходит при попытке добавить в список дубликат уже имеющейся строки: duplgnore -- добавление игнорируется (отклоняется); dupError -- добавление приводит к созданию исключительной ситуации EListError; dupAccept -- одинаковые строки разрешены. В этом случае при поиске в неотсортированном списке не определено, которая из строк будет найдена первой.


 

property OnChange: TNotifyEvent; property OnChanging: TNotifyEvent;

Два свойства, предусмотренные для определения пользователем своей реакции на изменение данных. Событие OnChanging вызывается во многих рассмотренных выше методах до внесения первого изменения, OnChange -- после последнего.


 

Класс TStream

Класс TStream не нов для библиотек фирмы Borland; он и его потомки называются потоками. Со времен появления в библиотеке Turbo Vision он не претерпел существенных изменений, но теперь потоки стали обязательными составными частями там, где нужно прочитать или передать во внешний источник какую-либо информацию.

TStream "является абстрактной моделью совокупности данных, обладающей двумя свойствами -- длиной Size и положением текущего элемента Position:

property Position: Longint;

(Ro) property Size: Longint;

От TStream порождены дочерние объекты, позволяющие пользоваться метафорой потока при работе с файлами, блоками памяти и т. п. Так, в модуле CLASSES описаны классы TMemoryStream и TFileStream.

Данные потока можно читать или записывать, используя предоставляемый буфер, или копировать из другого потока. Эта возможность реализована методами:

function Read(var Buffer; Count: Longint): Longint;

virtual; abstract;

function Writetconst Buffer; Count: Longint): Longint;

virtual; abstract;

Метод

function Seek(0ffset: Longint; Origin: Word): Longint;

virtual; abstract;

позиционирует поток. В зависимости от значения параметра Origin новая позиция выбирается так:

О -- новая позиция равна Offset;

1 --текущая позиция смещается на Offset байт;

2 -- новая позиция находится на Offset байт от конца потока.

Методы

procedure ReadBuffer(var Buffer; Count: Longint);

procedure WriteBuffer(const Buffer; Count: Longint);

представляют собой оболочки над Read/Write, вызывающие в случае неудачи операции исключительные ситуации EReadError/EWriteError.

Метод

function CopyFromfSource: TStream; Count: Longint): Longint;

дописывает к потоку Count байт из потока Source, начиная с его текущей позиции. Если значение Count равно нулю, то дописывается весь поток Source с его начала.

Основным отличием реализации TStream в VCL является введение ряда методов, обеспечивающих чтение и запись компонентов в потоки. Они полезны на уровне разработчика новых компонентов и здесь подробно не рассматриваются:

function ReadComponent(Instance: TComponent): TComponent;

function ReadComponentRes(Instance: TComponent): TComponent;

procedure WriteComponent(Instance: TComponent);

procedure WriteComponentRes (const ResName: string;

Instance: TComponent);

procedure ReadResHeader;

2.14. Справочник по функциям Delphi

В этом разделе мы приведем справочную информацию по функциям, имеющимся в библиотеке времени выполнения Delphi. Они сгруппированы по областям применения. Не рассматриваются:

* функции, содержащиеся в модуле SYSTEM и составляющие неотъемлемую часть самого языка Паскаль. Они не изменялись фирмой Borland уже на протяжении многих версий, и приводить их здесь нет необходимости;

* некоторые функции, относящиеся к тем или иным компонентам и описанные в главе 3 вместе с ними.

Большинство упомянутых здесь функций сосредоточено в модуле SYSUTILS. Для функции, которая относится к другому модулю, приведено его имя.

2.14.1. Функции работы со строками

В Delphi вынужденно уживаются два стандарта работы со строковыми данными. Первый из них, когда длина строки записывается в ее первом байте, традиционен для Паскаля. Ему соответствует тип данных string. Другой подразумевает, что строка заканчивается нулевым символом. Такие строки имеют тип PChar и применяются в основном при обращении к функциям API Windows.

Естественно, для выполнения операций со строками этих типов нужно предусмотреть два различных набора функций, которые и описаны ниже.

Первая таблица содержит функции для работы с типом string. Все перечисленные в ней функции находятся в модуле SYSUTILS.

 

 

 

 

function NewStrtconst S: String): PString;

Создает копию строки S и возвращает указатель на нее.

procedure DisposeStr(P: PString) ;

Уничтожает строку, на которую указывает Р.

procedure AssignStr(var P: PString; const S: strings-

Уничтожает строку, на которую указывает Р и затем присваивает ему адрес созданной копии строки S.

procedure AppendStrfvar Dest: string; const S: string);

Добавляет строку S в конец строки Dest.

function Uppercase(const S: string): string;

Преобразует символы 'a'..'z' в строке S к верхнему регистру.

function LowerCase(const S: string): string;

Преобразует символы 'A'..'Z' в строке S к нижнему регистру.

function CompareStr(const SI, S2: string): Integer;

Сравнивает две строки S1 и S2 с учетом регистра символов. Возвращаемое значение равно 0 в случае равенства строк или разности кодов пары первых несовпадающих символов.

function CompareText(const SI, S2: string): Integer;

Сравнивает две строки без учета регистра символов.

function AnsiUpperCase(const S: string): string;

Преобразует символы в строке к верхнему регистру с учетом языкового драйвера.

function AnsiLowerCase(const S: string) : string;

Преобразует символы в строке к нижнему регистру с учетом языкового драйвера.

function AnsiCompareStr(const SI, S2: string): Integer;

Сравнивает две строки с использованием языкового драйвера и с учетом регистра символов.

function AnsiCompareText(const SI, S2 : string) : Integer;

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

function IsValidldent(const Ident: string): Boolean;

Возвращает True, если строка Ident может служить идентификатором в программе на Object Pascal (т. е. содержит только буквы и цифры, причем первый символ -- буква).

function IntToStr(Value: Longint): string;

Преобразует целое число в строку.

function IntToHex(Value: Longint; Digits: Integer): s t r ing ;

Преобразует целое число в строку с его шестнадцатиричным представлением.

function StrToInt(const S: string): Longint;

Преобразует строку в целое число. При ошибке возникает исключительная ситуация EConvertError.

Информация о работе Справочник по компонентам Дельфи