Задание 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.

Контрольные вопросы

  1. Какие свойства компонента Form определяют её местоположение на экране?
  2. Каким методом опрееляется открытие формы?
  3. Как форму сделать невидимой?
  4. Какое свойство компонента Form определяет наличие или отсутствие стандартных кнопок в заголовке формы?
  5. Какое свойство определяет состояние формы?
  6. Каким свойством определяется положение окна в момент первого его появления на экране?

Практическая работа №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, выполняющийся вне зависимости от наличия исключительной ситуации.