Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Справочник по компонентам Delphi.doc
Скачиваний:
148
Добавлен:
02.05.2014
Размер:
1 Mб
Скачать

Класс 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.

function StrToIntDef(const S: string; Default; Longint): Longint ;

Работает как StrToInt, но при ошибке возвращает значение Default.

function LoadStr(Ident: Word) : string;

Загружает строку с индексом Ident из ресурсов приложения.

function FmtLoadStr(Ident: Word; const Args: array of const): string;

Загружает строку с индексом Ident из ресурсов приложения с форматированием (см. описание функции Format).

Следующая таблица содержит функции для работы со строками типа PChar (также находятся в модуле SYSUTILS):

function StrLIComp(Strl, Str2: PChar; MaxLen: Cardinal) : Integer;

Работает как StrLComp, но без учета регистра символов.

function StrScantStr: PChar; Chr: Char) : PChar;

Отыскивает первое вхождение символа Chr в строку Str и возвращает указатель на него или nil в случае отстутствия.

function StrRScanfStr: PChar; Chr: Char) : PChar;

Работает как StrScan, но отыскивается последнее вхождение Chr.

function StrPos(Strl, Str2: PChar) : PChar;

Отыскивает первое вхождение строки Str2 в строку Strl и возвращает указатель на нее или nil в случае отстутствия.

function StrUpperfStr: PChar) : PChar;

Преобразует строку к верхнему регистру.

function StrLower(Str: PChar): PChar;

Преобразует строку к нижнему регистру.

function StrPaslStr: PChar): String;

Преобразует строку Str в строку типа string.

function StrAlloc(Size: Cardinal): PChar;

Размещает в куче памяти новую строку размером Size и возвращает указатель на нее.

function StrBufSize(Str: PChar): Cardinal;

Возвращает размер блока памяти, выделенного для строки при помощи функции StrAlloc.

function StrNewfStr: PChar): PChar ;

Размещает в куче памяти копню строки Str и возвращает указатель на нее.

procedure StrDispose(Str: PChar);

Уничтожает строку, размещенную при помощи StrAlloc или StrNew.

function StrLenfStr: PChar):

Возвращает число символов в строке Str (без учета завершающего нулевого).

function StrEndfStr: PChar): PChar;

Возвращает указатель на завершающий нулевой символ строки Str.

function StrMove(Dest, Source: PChar; Count: Cardinal): PChar;

Копирует из строки Source в строку Dest ровно Count символов, причем строки могут пере­крываться.

function StrCopy(Dest, Source: PChar): PChar;

Копирует Source в Dest и возвращает указатель на Dest.

function StrECopy(Dest, Source: PChar): PChar;

Копирует Source в Dest и возвращает указатель на завершающий символ Dest.

function StrLCopy(Dest, Source: PChar; MaxLen: Cardinal): PChar;

Работает как StrCopy, но копирует не более MaxLen символов.

function StrPCopy(Dest: PChar; const Source: String): PChar;

Копирует строку Source (типа string) в Dest и возвращает указатель на Dest.

function StrPLCopy(Dest: PChar; const Source: string; MaxLen: Cardinal): PChar;

Работает как StrPCopy, но копирует не более MaxLen символов.

function StrCat(Dest, Source: PChar): PChar;

Дописывает Source к концу Dest и возвращает указатель на Dest.

function StrLCatfDest, Source: PChar; MaxLen: Cardinal) : PChar;

Работает как StrCat, но копирует не более MaxLen-StrLen(Dest) символов.

function StrCoirip(Strl, Str2: PChar): Integer;

Сравнивает две строки (посимвольно). Возвра­щает значение: <0 — при Strl <Str2, 0 — при Strl =Str2, >0 — при Strl >Str2.

function StrIComp(Strl, Str2: PChar): Integer;

Работает как StrComp, но без учета регистра символов.

function StrLComp(Strl, Str2: PChar; MaxLen: Cardinal): Integer;

Работает как StrComp, но сравнение происходит на протяжении не более чем MaxLen символов.

Соседние файлы в папке Delphi