Энциклопедия C++ Builder



ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И C++ - часть 25


{ // Чтение автоматизированного свойства сервера

Editl->Text = AutoServer.OlePropertyGet("EditStr");

// Обработчик события при нажатии кнопки Button3 void _fastcall

TFormI::Button3Click(TObject *Sender) { //

Очистка автоматизированного свойства сервера AutoServer.OleProcedure("Clear") ;

Листинг 3.17. Кодовый файл Auto1.cpp модуля контроллера.

3.6.1.5 Быстрый вызов функций

При объявлении функций, параметры которых передаются через процессорные регистры, используется модификатор _fastcall:

<возвращаемый тип> _fastcall

<name>(<список параметров^

Это ключевое слово определяет, что первые три типизированных параметра функции с именем name (слева направо по списку) передаются не через стек, а через процессорные регистры AX, BX и DX. Регистры не используются, если значение параметра не умещается в регистр, т.е. при передаче через параметр чисел с плавающей точкой, структур и функций.

Строго говоря, быстрый вызов функций не является прерогативой компилятора

C++Builder. В предыдущей главе я уже обращал внимание читателя на использование _fastcall в объявлениях функций обработки событий, которые C++Builder генерирует автоматически.

3.6.1.6 Расширенные типы данных Delphi

C++Builder не позволяет посредством известного ключевого слова typedef просто переопределить некоторые сложные типы данных Объектного Паскаля. C++Builder реализует такие расширенные типы в виде обычных или шаблонных классов

(template class). Каждый такой класс содержит все необходимые конструкторы, деструкторы, свойства и объектные методы. Многие компоненты VCL используют реализацию расширенных типов, а кроме того, они требуются при разработке новых компонент на базе оригиналов из Delphi.

Ниже приводится сводная таблица встроенных типов Delphi и соответствующих им типов C++Builder:

Delphi Длина и значения C++Builder Реализация
Shortint 8-битовое целое char typedef
Smallint 16-битовое целое short typedef
Longint 32-битовое целое long typedef
Byte 8-битовое целое без знака unsigned char typedef
Word 16-битовое целое без знака unsigned short typedef
Integer 32-битовое целое int typedef
Cardinal 32-битовое целое без знака unsigned long typedef
Boolean true/false bool typedef
ByteBool true/false или 8-битовое целое без знака unsigned char typedef
WordBool true/false или

16-битовое целое без знака

unsigned short typedef
LongBool true/false или

32-битовое целое без знака

unsigned long typedef
AnsiChar 8-битовый символ без знака unsigned char typedef
WideChar Слово - символ Unicode wchar t typedef
Char 8-битовый символ char typedef
String Текстовая строка Delphi AnsiString typedef
Single 32-битовое плавающее число float typedef
Double 64-битовое плавающее число double typedef
Extended 80-битовое плавающее число long double typedef
Real 32-битовое плавающее число float typedef
Comp 64-битовое плавающее число double typedef
Pointer 32-битовый указатель void * typedef
PChar 32-битовый указатель на символы без знака unsigned char * typedef
PansiChar 32-битовый указатель на ANSI символы без знака unsigned char * typedef
Set Множество 1..32 байт Set<type, minval, maxval> template class
AnsiString Текстовая строка Delphi AnsiString class
Variant Вариантное значение, 16 байт Variant class
TdateTime Значение даты и времени, 64-битовое плавающее число TDateTime class
Currency Валюта, 64-битовое плавающее число, 4 цифры после точки Currency class
<


Содержание  Назад  Вперед