Все сгенерированные файлы могут занимать довольно много места на жёстком диске (при компиляции и сохранении пустой формы все файлы могут занять порядка нескольких Мb пространства жёсткого диска). Однако ряд файлов несут в себе отладочную информацию, и для работы достаточно несколько важнейших файлов:
*.cpp – файл реализации модуля (создаётся для каждой формы и используется для размещения обработчиков событий), так же отдельный модуль создаётся Borland C++ Builder для головной функции WinMain;
*.h – заголовочный файл модуля, описывает класс формы;
*.dfm – двоичный файл, хранящий информацию о компонентах, размещённых на форме;
*.res – файл ресурсов, хранит информацию о использующихся пиктограммах, курсорах мыши и т.д.
*.mak – файл компоновки проекта, хранит информацию о файлах, входящих в проект.
При сохранении на диск проекта с именами, предлагаемыми по умолчанию, создадутся файлы:
Project1.cpp
Project1.mak
Project1.res
Unit1.cpp
Unit1.dfm
Unit1.h.
Структура проекта представлена на рис. 2.
Рис. 2
|
|
Внимание После окончания работы над проектом необходимо удалить все ненужные файлы во избежание нехватки диска для размещения временных файлов.
С позиций объектно-ориентированного программирования компоненты представляют собой указатели на класс, инкапсулированные в класс формы, а обработчики событий являются методами класса. Сама форма является производной от родительского класса TForm. Например, при переносе на форму одной кнопки и создания обработчика события OnClick будет автоматически сгенерирован следующий код в файле Unit1.h.
class TForm1: public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
Ключевое слово published (опубликованный) используется в Borland C++ Builder для определения объектов, чьи свойства будут доступны через инспектор объектов. Область их видимости аналогична public.
Модификатор __fastcall обозначает, что первые три параметра при вызове этой функции передаются не через стек, а через процессорные регистры AX, BX, DX. Если значение параметра не умещается в регистр.