- •2. Інтегроване середовище розробки Delphi: призначення і загальний опис середовища
- •3. Загальна організація програми в Delphi
- •4. Деякі довідкові відомості для роботи у середовищі Delphi
- •Цикл (программирование)
- •[Править]Определения
- •[Править]Виды циклов [править]Безусловные циклы
- •[Править]Цикл с предусловием
- •[Править]Цикл с постусловием
- •[Править]Цикл с выходом из середины
- •[Править]Цикл со счётчиком
- •[Править]Совместный цикл
- •[Править]Досрочный выход и пропуск итерации
- •[Править]Досрочный выход из цикла
- •[Править]Пропуск итерации
- •[Править]Необходимость
- •[Править]Вложенные циклы
- •[Править]Циклы с несколькими охраняемыми ветвями [править]Цикл Дейкстры
- •[Править]Цикл «паук»
- •[Править]Интересные факты
- •3.1 Інкапсуляція
- •3.2 Класи, компоненти і об'єкти
- •3.3 Спадкоємство
- •3.4 Розробка класів
- •3.4.1 Оголошення базового класу
- •3.4.2 Конструктори і деструкції
- •3.4.3 Оголошення похідних класів
- •3.5 Поліморфізм
- •3.5.1 Віртуальні функції
- •3.5.2 Дружні функції
- •3.6.1 Компоненти
- •3.6.1.1 Оголошення компонентних класів
- •3.6.1.2 Оголошення властивостей
- •3.6.1.3 Оголошення обробників подій
- •3.6.1.4 Оголошення автоматизованих властивостей і методів
- •3.6.1.5 Швидкий виклик функцій
- •3.6.1.6 Розширені типи даних Delphi
3.6.1.1 Оголошення компонентних класів
Випереджаючі оголошення класів Бібліотеки Візуальних Компонентів VCL, що входить до складу C++Builder, використовують модифікатор _declspec:
_declspec (<специфікатор>)
Це ключове слово може з'являтися в будь-якому місці переліку оголошень, а не тільки безпосередньо перед оголошенням, що модифікується, причому специфікатор приймає одне з наступних значень:
delphiclass використовується для випереджаючого оголошення прямих або непрямих похідних від VCL класу TObject. Він визначає правила сумісності VCL при зверненні з RTTI, конструкторами, деструкцією і виключеннями.
delphireturn використовується для випереджаючого оголошення прямих або непрямих похідних від VCL класів Currency, AnsiString, Variant, TDateTime і Set. Він визначає правила сумісності VCL при поводженні з параметрами і повертаними значеннями функцій-членів.
pascalimplementation вказує, що компонентний клас реалізований на Об'єктному Паскалі.
VCL клас має наступні обмеження:
• Заборонено спадкоємство віртуальних базових класів.
• Компонентні класи самі не можуть служити базовими класами для спадкоємства.
• Компонентні об'єкти створюються в динамічній пам'яті за допомогою оператораnew.
3.6.1.2 Оголошення властивостей
C++Buiider використовує модифікатор _property для ідентифікації властивостей компонентних класів. Синтаксис опису властивості має вигляд:
property <тип властивості> <ім'я властивості> = {<список атрибутів>} ;
де список атрибутів містить перерахування наступних атрибутів властивості:
write = < член даних або метод запису > визначає спосіб привласнення значення членові даних;
read = < член даних або метод читання > визначає спосіб набуття значення члена даних;
default = < булева константа > вирішує або забороняє збереження значення властивості за умовчанням у файлі форми з розширенням .dim;
stored = < булева константа або функція > визначає спосіб збереження значення властивості у файлі форми з розширенням .dfm.
C++Buiider використовує модифікатор _published для специфікації тих властивостей компонентів, які відображатимуться Інспектором об'єктів на стадії проектування додатку. Якщо розробник компонентів бажає вирішити модифікацію значення деякої властивості, воно не оголошується як _published. Правила видимості, визначені цим ключовим словом, не відрізняються від правил видимості членів даних, методів і властивостей, оголошених як public. Єдина відмінність виявляється в тому, що під час роботи програми Інспекторові об'єктів передається інформація RTTI.
3.6.1.3 Оголошення обробників подій
C++Buiider використовує модифікатор _closure для оголошення функції обробників подій:
<тип> (_closure * <name>) (<список параметрів>)
Це ключове слово визначає покажчик функції з ім'ям name. На відміну від 4-байтового адресного покажчика звичайної функції (який передається в кодові регістри CS:IP) 8-байтовий _closure передає ще і прихований параметр (непостійний покажчик this на екземпляр поточного класу).
Введення 8-байтових покажчиків робить можливим не тільки викликати деяку функцію певного класу, але і звертатися до функції в певному екземплярі цього класу. Ця здатність була запозичена з Об'єктного Паскаля, а _closure виявився життєво необхідним для реалізації механізму подій в Бібліотеці Візуальних Компонентів.