- •Delphi Справочник по компонентам. Класс tList
- •Класс tStream
- •Функции работы с файлами
- •Функции преобразования чисел с плавающей точкой
- •Функции работы с датами и временем
- •Элементы управления
- •Положение, размеры и выравнивание элементов управления
- •Активность и видимость элементов управления
- •Внутренний интерфейс Drag&Drop
- •Ярлычки и оперативная подсказка
- •Оконные элементы управления
- •Фокус ввода
- •Графическая подсистема
- •Класс tFont
- •Класс тРеn
- •Класс tBrush
- •Класс tCanvas
- •Класс tGraphic
- •Класс tPicture
- •Класс tMetafile
- •Класс tIcon
- •Класс tBitmap
- •Описание компонентов vcl
- •TPopupMenu.
- •Компонент tMainMenu
- •Компонент tPopupMenu
- •Компонент tBitBtn
- •Компонент tSpeedButton
- •Компонент tRadioGroup
- •Компонент tSpinButton
- •Ввод и редактирование текста
- •Компонент tEdit
- •Компонент тМеmo
- •Компонент tMaskEdit
- •Функции для форматирования текста
- •Оформление приложения
- •Компонент tPaintBox
- •Компонент tBevel
- •Компонент tImage
- •Компонент tHeader
- •Ввод и выбор значений
- •Компонент tListBox
- •Компонент tComboBox
- •Компонент tScrollBar
- •Компонент tSpinEdit
- •Компонент tDrawGrid
- •Многостраничные диалоговые окна
- •Компонент tNotebook
- •Компонент tTabSet
- •Компонент tTabbedNotebook
- •Группирование компонентов
- •Компонент tGroupBox
- •Компонент tPanel
- •Компонент tScrollBox
- •Компоненты — стандартные диалоговые окна Windows
- •Компоненты tOpenDialog и tSaveDialog
- •Компонент tColorDialog
- •Компонент tFontDialog
- •Компонент tPrintDlalog
- •Компонент tFindDialog
- •Компонент tReplaceDialog
- •Работа с файловой системой
- •Компонент tDriveComboBox
- •TDirectoryListBox
- •Компонент tFileListBox
- •Компонент tFilterComboBox
- •Компонент tDirectoryOutline
- •Работа со средствами мультимедиа
- •Динамический обмен данными (dde)
- •Компонент tdDeServerConv
- •Компонент tdDeServerltem
- •Компонент tddeciIentConv
- •Компонент tddecIientltem
- •Дополнительные компоненты
- •Компонент tGauge
- •Компонент tCalendar
- •Компонент tColorGrld
- •Использование интерфейса ole
- •Компонент toleContainer
- •Форма и ее свойства
- •Управление дочерними элементами
- •Приложение и среда его выполнения
- •Объект Application
- •Объект Clipboard
- •Компонент tScreen
- •Файлы инициализации
- •Печать данных из приложения
- •Компонент tSession
- •Компонент tDatabase
- •Компонент tDataSource
- •Компонент tTable
- •Компонент tQuery
- •Компонент tStoredProc
- •Компонент tReport
- •Компонент tBatchMove
- •Компонент tField
- •Объект tFieldDef
- •Важнейшие типы данных
- •Компоненты отображения данных и управления данными
- •Компонент tdbGrid
- •Компонент tdbNavigator
- •Компонент tdbText
- •Компонент tdbEdit
- •Компонент tdbMemo
- •Компонент tdbImage
- •Компонент tdbListBox
- •Компонент tdbComboBox
- •Компонент tdbCheckBox
- •Компонент tdbRadioGroup
- •Компонент tdbLookupUst
- •Компонент tdbLookupCombo
Класс 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 символов. |