Задание 1
Измените свойства формы из лабораторной работы №2 (Задание 1) в соответствии с таблицей 1
Таблица 1. Значения свойств формы
Свойство | Значение | Комментарий |
Caption | Заголовок формы | |
Height | ||
Width | ||
BorderStyle | bsSingle | Тонкая граница не позволяет изменить размер окна во время работы программы путем захвата и перемещения границы |
BorderIcons.biMinimize | False | В заголовке окна нет кнопки Свернуть |
BorderIcons.biMaximize | False | В заголовке окна нет кнопки Развернуть |
Position | poDesktopCenter | В момент запуска программы окно появится в центре рабочего |
Font.Name | Tahoma | |
Font.Size |
Задание 2
1. Создайте свой значок для формы.
Для этого в свойствах формы надо выбрать свойство Icon.
2. Измените цвет формы, сделав его бордовым.
3. Сделайте форму прозрачной.
Для этого
− свойство AlphaBlend установите в True;
− в свойстве AlphaBlendValue установите 127.
Контрольные вопросы
- Какие свойства компонента Form определяют её местоположение на экране?
- Каким методом опрееляется открытие формы?
- Как форму сделать невидимой?
- Какое свойство компонента Form определяет наличие или отсутствие стандартных кнопок в заголовке формы?
- Какое свойство определяет состояние формы?
- Каким свойством определяется положение окна в момент первого его появления на экране?
Практическая работа №6
Тема: «Обработка исключительных ситуаций в приложениях».
Цель работы: научиться обрабатывать исключительные ситуации в приложниях.
Время выполнения: подготовка – 5 мин; выполнение – 165 мин.; проверка – 10
мин; всего – 180 мин.
Описание практической работы
Теоретические сведения
Исключительная ситуация– ошибка времени выполнения, которая возникает во время выполнения программы и делает её дальнейшую работу либо невозможной, либо бессмысленной.
Операторы обнаружения и обработки исключений
В языке C++ для обнаружения исключительных ситуаций используется оператор try {…},а для обработкиисключений оператор catch(…) {}.
Синтаксис оператора в общем виде:
Try
{
// участок кода, в котором может возникнуть исключение
}
catch(/* имя исключения */)
{
// обработка исключения, вывод сообщения об ошибке и т.д.
}\
Основные типы исключений:
Название исключения | Описание |
EDivByZero | Попытка деления на ноль для ЦЕЛЫХ чисел |
EZeroDivide | Попытка деления на ноль для вещественных чисел (float). |
EConvertError | Ошибка конвертирования одного типа данных в другой |
EDatabaseError | Ошибка доступа к данным в компонентах-наследниках TDataSet. |
EInvalidPointer | Ошибка при попытке освобождения уже освобожденного или еще неинициализированного указателя |
EAccessViolation | Ошибка обращения по адресу в памяти (например, обращение по адресу, который ссылается на пустую ячейку памяти) |
ERangeError | Ошибка при попытке обращения к элементам массива по индексу, выходящему за пределы массива, как результат |
Простой пример обработки исключений показывает, как при возникновении любой ошибочной ситуации, например при отсутствии текста в поле, можно вывести сообщение.
1. Установите на форму компоненты Label, Edit и Button.
2. В обработчик события кнопки введите код:
void _ _fastcall TForm1::Button1Click (TObject *Sender)
{
AnsiString str="abc";
int a;
try
{
a=StrToInt(str);
}
catch(Exception *e)
{
ShowMessage("Error");
}
}
Си++ позволяет применять несколько catch-блоков, каждый из которых определяет способ обработки своей конкретной ситуации. Вслед за уже имеющимся catch-блоком можно добавить еще один (число таких перехватчиков не ограничено), только вместо названия класса EConvertError необходимо указать другой класс, например, EOverflow (контроль за использованием слишком больших чисел с плавающей запятой), и показывать сообщение с другим текстом. Весь код будет выглядеть так:
try
{
Roubles->Text = FloatToStrF( floor( StrToFloat( Dollars->Text StrToFloatf Rate->Text ) + 0.5 ), ffFixed, 10, 2 ) ;
}
catch (EConvertError &e)
{
ShowMessage("В одно из полей ведены нечисловые данные">;
}
catch (EOverflow &e)
{
ShowMessage("В одно из полей введено слишком большое число); }
4. Сохраните приложение и запустите его.
В блоке try можно использовать лексему throw для вызова исключительной ситуации или для указания типа исключения, которое вызывает функция. Вслед за блоком try вместо catch часто располагают блок _finally, выполняющийся вне зависимости от наличия исключительной ситуации.