4.5 Программы, управление событиями, исключения
Рассмотрим простейшую программу - вывод строки по нажатию кнопки. Создадим новый проект или воспользуемся пустым проектом, который предоставляется С++ Builder в момент его запуска.
На пустую форму положим два компонента: строку редактирования Edit и кнопку Button.
Для этого щелкнем мышью на пиктограмме требуемого элемента в палитре, а затем поставим его в нужное место формы.
Далее щелкнем на свойстве Text компоненты Edit и удалим текст, присвоенный строке системой.
Изменим свойство Caption кнопки Button, введя текст "Нажми". Форма готова. Осталось написать исходный текст для обработки нажатия кнопки. Для этого надо выделить кнопку Button, переключить окно инспектора объекта в режим создания обработчиков событий и дважды щелкнуть на событии OnClick.
Откроется окно редактирования кода, в котором появился пустой обработчик события. Добавим в него строку исходного текста:
Edit1-> Text = "Привет от Borland C++!";
После этого командой Run-Run начать компиляцию и выполнение программы.
Нажмем кнопку "Нажми", и программа поприветствует нас. В отличии от DOS, в которой программа получает управление при запуске, и выполняется от начала до конца, в Windows 95 программа управляется событиями. При управлении событиями программа не делает ничего до тех пор, пока не происходит событие - нажатие клавиши мыши, нажатие клавиши клавиатуры и т.д.
Существуют различные виды событий и их обработка. На примерах рассмотрим некоторые из них.
1.Обработчик, откликающийся на событие.
Рассмотрим пример - обработка нажатия клавиши мыши и вывод координат курсора мыши.
1.Запускаем C++ Builder.
2.В инспекторе объектов выбираем страницу Events.
3.Справа от метки события OnMouseDown (нажатие клавиши мыши) дважды щелкаем мышью.
4.Появляется программный код процедуры - обработчика событий.
5.Вводим код.
Form1->Canvas->TextOut(X,Y,"Координата "+IntToStr(X)+
","+ IntToStr(Y));
6. Запускаем программу на выполнение.
При нажатии клавиши мыши активизируется обработчик событий OnMouseDown,которому передаются параметры - координаты X и Y.
Таким образом в данном случаее мы рассмотрели вариант, когда обработчику событий передана некоторая информация - параметры X и Y.
2.Обрабочик событий, передающий информацию, вызываемой процедуре.
Возможен вариант, когда обработчик событий передает информацию функции, которая его вызвала. Рассмотрим пример, когда в окне редактирования все буквы преобразуются в заглавные.
1.Запускаем C++ Builder.
2.Выводим на форму из палитры компонент элемент Edit.
3.В разделе инспектора объектов Events вправо от OnKeyPress два раза щелкаем мышью, получаем фрагмент кода.
4.Набираем код.
Key= AnsiUpperCase(Key)[1];
5.Запускаем на выполнение. Любая введеная буква печатается как заглавная.
В данном примере переменная Key, содержащая значение нажатой клавиши указана как указатель на адрес символа - в этом случае любые изменения, сделанные в переменной передаются обратно в вызывающую функцию. Функция AnsiUpperCase(Key) преобразует символ в заглавный.
Кроме этого существуют обработчики событий, ориентированный на обработку вспомогательных операций в сложной программе.
Исключения. Для обработки исключений(ошибок) в C++ Builder имеются специальные средства. В частности, при возникновении ошибки возможна передача управления блоку, который ориентирован на обработку этой ошибки. Для этой цели используется блок try ... except() следующего формата:
try {
исполняемый код
}
except (проверяемая пеpеменная)
{
код, исполняемый при ошибке
}
4.6 Стратегия отладки Windows-программ
Ошибки в программе могут быть самыми разнообразными. Но для Windows-приложений характерны следующие :
- вызов неверной функции, когда вместо одной функции по ошибке вызывается другая;
- вызовам Windows API передаются неправильные аргументы;
- задание неверных параметров цикла;
- ошибка в условии операторов if, switch, while и т.д., приводящая к неправильному ветвлению;
- возникновение не предусмотренного программистом варианта реакции системы.
Для отладки программ обычно используется несколько стандартных операций:
* установка точек прерывания (breakpoints);
* просмотр содержимого переменных и участков памяти;
* подстановка ложных данных для моделирования ситуации "что - если";
* ложные вызовы.
DOS-программу можно выполнять пошагово, перебираясь от одной строки исходного текста к другой В Windows же это нереально. Нужно поставить точку прерывания на интересующем вас участке программы и запустить ее на выполнение командой Run - Run. Достигнув точки прерывания, программа приостановит свое выполнение, давая возможность программисту приступить к отладочным действиям.
В программах на C++ Builder, точки прерывания удобнее всего ставить внутри обработчиков событий.
Простейший способ установить точку прерывания - нажать на клавишу <F5>. При этом выбранная для остановки строка выделяется красной полосой, на левом краю строчки появляется маленький значок "Stop".
Повторное нажатие на <F5> отменяет уже имеющуюся точку прерывания.
Другой способ установить точку прерывания - щелкнуть мышью на левом краю окна редактирования.
Когда ошибочный обработчик найден, нужно приступать к уточнению места ошибки. Для этого Можно выполнять программу шаг за шагом командой Trace Into ( клавиша <F7>) или Step Over (клавиша <F8>), проверяя, как изменяются данные программы.
После того как программа отлажена, необходимо перетранслировать ее, установив в главном меню в разделе Options->C++ опцию Release.
... . Имеет ли право на существование эта биологизаторская интерпретация экологии? Видимо, да. Она широко представлена, и с этим следует считаться. Но она не может служить концептуальной основой комплексного непрерывного экологического образования. В структуре научного знания при таком подходе не остаётся места для географической и социальной экологии, экологии человека, а сама биология превращается ...
... хотя бы стены, чтобы нас не унижали в собственном доме, до конца не растащили наше имущество, нам нужна, обладающая высоким моральным и воинским духом достойно обеспеченная армия. Однако, значение российской армии и в том, что она представляет собой, пожалуй, единственный институт в современной виртуальной России, лишенный симулякров, поскольку ней, по крайней мере, погибают реально - в бою. ...
... важные функции управления предприятием, такие как: определение задач; планирование ресурсов; оценка деятельности и мотивация персонала на основе оценки; контроль исполнения. В целом, бюджетирование решает тактические вопросы и, по существу, для стратегического управления не предназначено. Связь бюджетирования со стратегией Практика стратегического планирования западных компаний ...
... . Для этого достаточно измерить его на карте и знать масштаб карты. Компас. Научиться пользоваться компасом нетрудно. Но компас, как правило, наилучшим помощником в ориентировании становится вместе с картой. В спортивном ориентировании пользуются специальными жидкостными компасами. Они позволяют быстро и просто взять с карты нужное направление и двигаться по местности по выбранному азимуту. ...
0 комментариев