Borland C Builder 6 за начинаещи (член четвърти) - Програмиране - Приднестровски портал

При разработването на програми, особено в началото, са възможни синтактични и логически грешки. Колкото по-сложна е програмата, толкова по-трудно е да ги откриете. За улесняване на откриването и отстраняването на грешки в средата за разработка Borland C ++ Builder 6 има вграден програмен дебъгер. Тя ви позволява да преминавате през програмата, да задавате точки на прекъсване, да преглеждате променливи и да извършвате други операции.

borland

Сега заменете свойството Caption на всички обекти на приложения в инспектора на обекти съответно със заглавия Програма 2, Бутон 1, Изход и празен низ. В резултат на това трябва да получите прозореца, показан на фиг. 2. Обърнете внимание, че елементът Labell, разположен над бутоните, не се вижда, защото сме заменили неговото свойство Caption с празен низ, тоест изчистихме това свойство.

builder

Щракнете двукратно върху левия бутон на мишката върху създадения бутон Exit и в отворения прозорец на инспектора на кода въведете командата CloseQ; приложение за затваряне между фигурните скоби на шаблона за обработка на събития. Върнете се в прозореца на формуляра и щракнете двукратно върху левия бутон на мишката върху бутона с име Бутон 1. В отворения прозорец на инспектора на кода въведете командния ред между фигурните скоби:

Label1-> Caption = "Бутон 1 е натиснат" + IntToStr (++ i) + "пъти";

В този ред от команди се извършва присвояване (знак за равенство) на свойството Caption на елемента етикет Label 1 на текстов ред, състоящ се от три части. Тъй като свойството Caption на елемента Labell е предназначено да показва текст, трябва да присвоим само текстови (низ) стойности на това свойство. В C ++ такива низови стойности са затворени в кавички. Първата и последната части на присвоената стойност са точно това. Променливата i ще служи като брояч на броя кликвания върху бутона в програмата, който трябва автоматично да се увеличи с едно преди показване. За целта пред него се изписват два знака плюс. Тази операция се нарича автоинкремент в C ++. За да конвертирате числова променлива i в низ, използвайте вградената функция C ++ за преобразуване на цели числа в низове IntToStrQ. И така, в един ред от команди сме извършили редица операции. Не е ли чудесен език за програмиране?!
Запазете проекта като butct. bpr и програмният модул носи името Ubutct.cpp. Можете обаче да дадете други имена. Не променяйте само разширенията на файлове.
Сега нека се опитаме да компилираме, свържем и стартираме това приложение и в същото време да проверим дали има грешки в него. Изпълнете командата Compile от групата Project на главното меню или натиснете комбинацията от горещи клавиши, за да компилирате програмата Alt + F9. Ще видите прозореца, показан на фиг. 3.

borland

Най-горният ред на този прозорец показва пътя и името на проекта на програмата. Следващият ред първо показва процеса на компилация, редувайки се със запис на завършването на тази операция „Готово“ и съобщение за намерените грешки Има грешки (тук има грешки). По-долу е номерът на текущата линия на програмата Текуща линия и общият брой арки на програмата Обща линия. Долният ред показва броя на намерените досега съвети, предупреждения и грешки. Както можете да видите, има една грешка в програмата. Натиснете бутона OK в прозореца и ще видите прозореца на инспектора на код с маркиран ред, който има грешка, и съобщение за вида на грешката в долната част на прозореца (фиг. 4).

начинаещи


Сега нека да компилираме отново и да установим, че няма грешки. Но не бързайте да се радвате. Въпросът е, че не сме присвоили начална стойност на променливата i. Компилаторът не обръща внимание на това и не издава съобщения за това. Това обаче може да доведе до недоразумения в програмата. Следователно, ние извършваме присвояване на началната стойност на променливата i, като правим обозначението i = 0; в текста на програмата на манипулатора за създаване на формуляри (в края на краищата, когато програмата беше стартирана, бутон 1 не беше натиснат нито веднъж). За целта щракнете двукратно върху формуляра за кандидатстване и в отворения прозорец на инспектора на кода въведете реда между къдравите скоби на текста на програмата

Нека да изградим проекта с помощта на командата Make от групата Project на главното меню или просто като натиснем комбинацията от горещи клавиши Ctrl + F9, за да изградим програмата. В резултат на това трябва да получим оформление на приложението без грешки. Сега приложението може да бъде запазено и изпълнено за изпълнение с помощта на командата Изпълнение или използвайте горещия бутон, за да стартирате програмата F9.
На екрана ще се появи прозорецът на нашата програма. Щраквайки с левия бутон върху бутона с името Бутон 1, ще видите, че всеки път, когато в прозореца се появи съобщение за броя на натисканията на този бутон.
В бъдеще не забравяйте да запазвате проекта всеки път, когато стартирате приложението след редактиране. Това ще избегне загубата на информация, когато програмата замръзне поради грешки в нея.
Практикувайте се, умишлено въвеждайки грешки в програмата и изучавайки получените съобщения за грешки при компилиране и свързване на проекта.

СТРУКТУРА НА ФАЙЛОВЕ
Сега нека разгледаме по-отблизо структурата на основните програмни файлове, за да не се загубим при възникване на сложни грешки и да имаме представа за това как работи програмата за възстановяване на грешки. Да се ​​върнем към нашия пример по-горе и да разгледаме състава на файловете на проекта. За по-добро разбиране на текста на програмите за тези, които не са запознати с езиците за програмиране, препоръчвам да прочетете например книгата [1]. В C ++ основната функция на даден проект е основната функция. В програми, написани за операционната система Windows, основната функция е WinMain. Тази функция се съдържа в програмния модул butct.cpp от нашия пример. По-долу е неговото съдържание.

Вече познаваме повечето редове на този файл от предишното описание и самата примерна програма. Нека разгледаме само неизвестни редове. Редът #pragma package (smart_init) определя последователността на инициализация на програмните компоненти. Редът #pragma ресурс "* .dfm" казва на препроцесора да използва * .dfrn файл с името на този файл за формуляра. В ред TForml * Forml; класът TForml е деклариран за Forml. Това е последвано от процедурите за създаване на формуляри за кандидатстване и манипулатори на събития, обсъдени по-горе.
Обърнете внимание на реда #include "Ubutct.h", който включва заглавния файл Ubutct.h, представен по-долу към модула.

#ifndef UbutctH
#define UbutctH
//---------------------------------------------------------------------------
#include
#include
#include
#include
//---------------------------------------------------------------------------
клас TForm1: публичен TForm
__published: // IDE-управлявани компоненти
TButton * Бутон1;
TButton * Бутон2;
TLabel * Label1;
void __fastcall Button2Click (TObject * Sender);
void __fastcall Button1Click (TObject * Sender);
void __fastcall FormCreate (TObject * Sender);
private: // Потребителски декларации
public: // Потребителски декларации
int i; // Променлива - брояч
__fastcall TForm1 (TComponent * Owner);
>;
//---------------------------------------------------------------------------
външен ПАКЕТ TForm1 * Form1;
//---------------------------------------------------------------------------
#endif