Иллюстрированный самоучитель по C++ Builder

Меню

 
Главная
Assembler
Turbo Pascal
C++ Builder
Delphi
Java
Скачать


Статистика

 

   


Реклама

 

 

 

Структура простого проекта

Проект представляет собой набор программных единиц — модулей.

Один из модулей, называемый главным, содержит инструкции, с которых начинается выполнение программы. Чтобы увидеть главный модуль, нужно в меню Project выбрать команду View Source. В качестве примера в листинге 2.5 приведен текст главного модуля программы "Сила тока".

Листинг 2.5. Главный модуль (Amper.cpp)

#include <vcl.h> 
#pragma hdrstop 
USEFORM("Amper_l.cpp", Forml); 
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) 
{ 
try 
{ 
Application->Initialize(); 
Application->Title = "Сила тока"; 
Application->CreateForm(__classid(TForml), SForml); 
Application->Run(); } 
catch (Exception Sexception) 
{ 
Application->ShowException(Sexception); 
} 
catch (...) 
{
try 
{ 
throw Exception(""); 
}
catch (Exception Sexception) 
{
Application->ShowException(Sexception);
 }
  } 
return 0; 
} 

Начинается главный модуль директивами компилятору (точнее, препроцессору). Директива #include <vci,h> информирует компилятор, что перед тем как приступить непосредственно к компиляции, в текст главного модуля нужно включить заголовочный файл библиотеки визуальных компонентов — vcl.h. Строка USEFORM("Amper_i.cpp", Form1) указывает, что в проект нужно включить файл модуля формы Amper_l.cpp, который содержит функции обработки событий для формы Form1. Далее следует описание главной функции программы — winMain. Функция winMain инициализирует внутренние структуры программы, создает форму Formi и запускает программу, что приводит к появлению на экране стартовой формы. Так как в проекте "Сила тока" только одна форма, то на экране именно она и появляется. Инструкция обработки исключений catch выполняется, если в программе возникает ошибка. Таким образом, главный модуль обеспечивает вывод стартовой формы программы, дальнейшее поведение которой определяют функции обработки событий стартовой формы.

Помимо главного модуля в состав проекта входят модули формы. Для каждой формы C++ Builder создает отдельный модуль, который состоит из двух файлов: заголовочного файла и файла кода (содержимое этих файлов отражается в окне редактора кода). Заголовочный файл содержит описание формы (листинг 2.6), файл кода (модуль формы) — описание (текст) функций, в том числе и обработки событий (листинг 2.7).

Листинг 2.6. Заголовочный файл модуля формы (Amper_1.h)
#ifndef Amper_1H 
#define Amper_1H 
#include <Classes.hpp> 
#include «Controls.hpp> 
#include <StdCtrls.hpp> 
#include <Forms.hpp> 
class TForml : public TForm 
{ 
__published:  // IDE-managed Components 
TLabel *Label1; 
TLabel *Label2; 
TLabel *Label3; 
TEdit *Editl; 
TEdit *Edit2; 
TButton *Buttonl; 
TButton *Button2; 
TLabel *Label4; 
void__fastcall ButtonlClick(TObject *Sender); 
void__fastcall Button2Click(TObject *Sender);
private:      // User declarations 
public:      // User declarations 
__fastcall TForml(TComponent* Owner);
};
extern PACKAGE TForml *Form1; 
#endif 

Листинг 2.7. Модуль формы (Amper_1.cpp)
#include <vcl.h> 
#pragma hdrstop 
#include "Amper_l.h" 
#ragma package(smart_init) 
#pragma resource "*.dfm" 
TForm1 *Form1; 
__fastcall TForml::TForml(TComponent* Owner) 
: TForm(Owner) 
{ 
} 
// щелчок на кнопке Вычислить 
void__fastcall TForml::ButtonlClick(TObject *Sender) 
{ 
float u; // напряжение 
float r; // сопротивление 
float i; // сила тока 
// получить данные из полей ввода 
// возможно исключение 
try 
{ 
u = StrToFloat(Editl->Text); 
r = StrToFloat(Edit2->Text); 
} 
catch (EConvertError &e) 
{ 
ShowMessage("При вводе дробных чисел используйте запятую."); 
return; 
} 
// вычислить силу тока 
// возможно исключение
 
try 
{ 
i = u/r; 
} 
catch (EZeroDivide &e) 
{ 
ShowMessage("Сопротивление не должно быть равно нулю"); 
Edit1->SetFocus();  // курсор в поле Сопротивление 
return;
 }
// вывести результат в поле метки Label4->Caption = "Ток : " + 
FloatToStrF(i,ffGeneral,7,3); 
} 
// щелчок на кнопке Завершить 
void__fastcall TForml::Button2Click(TObject *Sender) 
{ 
Forml->Close(); // закрыть окно программы 
} 

Следует отметить, что значительное количество работы по генерации программного кода выполнил C++ Builder. Он полностью сформировал главный модуль (Amper.cpp), заголовочный файл модуля формы (Amper_l.h), значительную часть модуля формы (Amper_l.cpp). Кроме того, C++ Builder, анализируя действия программиста, сформировал описание формы, файл проекта и файл ресурсов проекта.
 

Copyright legioner© intbook.info, 2007