Автор: Пользователь скрыл имя, 20 Марта 2012 в 14:52, лабораторная работа
1. Цель работы
Ознакомление с классом исключительных ситуаций Delphi и создание приложений, генерирующих исключения и обрабатывающие различные фокусы ввода.
2. Домашнее задание
Изучить разделы 5 и 6 конспекта лекций, ознакомиться с описанием заданием на лабораторную работу.
Основные понятия и приемы
3.1. Обработка исключений
ЛАБОРАТОРНАЯ РАБОТА № 1
1. Цель работы
Ознакомление с классом исключительных ситуаций Delphi и создание приложений, генерирующих исключения и обрабатывающие различные фокусы ввода.
2. Домашнее задание
Изучить разделы 5 и 6 конспекта лекций, ознакомиться с описанием
3.1. Обработка исключений
На этапе выполнения Delphi порождает исключения, когда какой-либо процесс идет неправильно. Если код вашей подпрограммы написан соответствующим образом, он может распознать возникшую проблему и попытаться ее решить; в противном случае исключение передается в код, который вызвал вашу подпрограмму и т.д. В конечном счете, если никто не обработал исключение, его обрабатывает Delphi, выводя на экран стандартное сообщение об ошибке и пытаясь продолжить выполнение програм-мы.
Весь механизм строится на четырех ключевых словах:
try – определяет начало защищенного блока кода;
except – определяет конец защищенного блока кода и вводит операторы обработки исключений в следующем виде:
on (тип исключения) do (оператор)
finally – указывает необязательный блок, который используется для освобождения ресурсов, распределенных в блоке try перед обработкой исключения; этот блок завершается ключевым словом end.
raise – оператор, используемый для порождения исключений. Большинство исключений, которые вы встретите при программировании на Del-phi, будут порождаться системой, но вы также можете создать их в собственном коде, когда во время выполнения обнаружатся недопустимые или несогласованные данные. Кроме того, ключевое слово raise можно использовать внутри обработчика для повторного порождения исключе
ния, т.е. для передачи его следующему обработчику.
Если вы хотите, чтобы при правильной обработке исключений программа продолжала выполняться, отключите опцию отладки Break on Exception в
окне Environment Options.
3.2. Предопределенные обработчики исключительных ситуаций
Ниже Вы найдете справочную информацию по предопределенным исключениям, необходимую для профессионального программирования в
Delphi.
Abort, определенная как: procedure Abort; begin
raise EAbort.CreateRes(
RunTime Error 200.
RunTime Error 205.
RunTime Error 206.
Соответствует RunTime Error 203.
18при пошаговом выполнении приложения в IDE Delphi.
3.3. Восприятие ввода от пользователя
Обратим особое внимание на одно качество, характерное для многих управляющих элементов – фокус. Как определить какое окно или поле имеет фокус ввода? В каждый конкретный момент фокус имеет только одно поле. Вы можете перемещать фокус, используя клавишу Tab или щелкая мы-шью по другому компоненту. Каждый раз когда компонент получает или теряет фокус, к нему приходит соответствующее событие, которое указывает, что пользователь достиг (OnEnter) или покинул (OnExit) компонент.
При использовании компонента Edit для ввода чисел пользователь вместо цифры может набрать букву. Функции преобразования вернут код ошибки, что поможет определить действительно ли введено число. Когда можно выполнить такую проверку? Возможно, когда изменится значение блока редактирования, когда компонент потеряет фокус или когда пользователь щелкнет по некоторой кнопке в диалоговой панели. Можно просматривать входной поток в блоке редактирования и останавливать любой нечисловой код.
4. Порядок выполнения работы
19Сохраните этот проект в папке"С:\Ваша_группа\Ваша_фами
соответствующий компонент Edit. Форма также содержит кнопку для проверки содержимого первого поля редактирования.
Событие OnClick кнопки должно проверять целочисленность введенного в первое поле значения, например:
var
Number, Code : Integer ; begin
if Edit1.Text <> ‘ ’ then begin
val ( Edit1. Text, Number, Code) ; if Code <> 0 then
begin
Edit1. SetFocus ;
MessageDlg (‘ Not a number in the first edit ‘ , mtError, [ mbOK ] , 0 ) ;
end ; end ;
end ;
♦ При выходе из компонента Edit2 (событие OnExit) осуществляется аналогичная проверка.
var
Number, Code : Integer ; begin
if (Sender as TEdit ). Text <> ‘ ’ then begin
val ((Sender as TEdit ). Text, Number, Code) ; if Code <> 0 then
begin
(Sender as TEdit ). SetFocus ; MessageDlg (‘ The edit field number ‘ +
IntToStr ((Sender as TEdit ). Tag) +
‘ does not have a valid number’ , mtError, [ mbOK ] , 0 ) ;
end ; end ;
end ;
Текст сообщения об ошибке может варьироваться.
♦ Третий компонент Edit выполняет аналогичную проверку при каждом изменении его содержимого (используя событие OnChange}.
♦ Записать код для события события OnKeyPress компонента Edit4 и про-верить, не является ли введенный символ числом или клавишей Back-space (которая имеет числовое значение 8).
begin
if not ( key in [ ‘0’ . . ‘9’ , # 8] } then begin
Key := # 0 ;
MessageBeep ($ FFFFFFFF) ; end;
end;
♦ Для события OnEnter компонента Edit5 записать код, в котором необходимо преобразовать введенные символы в число с помощью функции StrToInt. Использовать исключение для обработки ошибки EConvertError.
Информация о работе Обработка исключительных ситуаций в Delphi. Восприятие ввода от пользователя