Автор работы: Пользователь скрыл имя, 23 Февраля 2011 в 07:41, лабораторная работа
. Цель работы
Ознакомление со средой визуального программирования Delphi и разра-
ботка в ней простейших приложений.
пример, объект TStringList содержит только 10 строк, а происходит
обращение к одиннадцатому).
• EMathError - предок исключений, случающихся при выполнении
операций с плавающей точкой.
• EOverflow - происходит как результат переполнения операций с
плавающей точкой при слишком
больших величинах.
RunTime Error 205.
• Underflow - происходит как результат переполнения операций с пла-
вающей точкой при слишком малых величинах. Соответствует
RunTime Error 206.
• EZeroDivide - вызывается в результате деления на ноль.
• EMenuError - вызывается в случае любых ошибок при работе с
пунктами меню для компонент TMenu, TMenuItem, TPopupMenu и их
наследников.
• EOutlineError - вызывается в случае любых ошибок при работе с
TOutLine и любыми его наследниками.
• EOutOfMemory - происходит в случае вызовов New(), GetMem() или
конструкторов классов при
Соответствует RunTime Error 203.
• EPrinter - вызывается в случае любых ошибок при работе с принте-
ром.
• EProcessorException - предок исключений, вызываемых в случае
прерывания процессора- hardware breakpoint. Никогда не включается
в DLL, может обрабатываться только в “цельном” приложении.
• EBreakpoint - вызывается в случае останова на точке прерывания
при отладке в IDE Delphi. Среда Delphi обрабатывает это исключе-
ние самостоятельно.
• EFault - предок исключений, вызываемых в случае невозможности
обработки процессором тех или иных операций.
• EInvalidOpCode - вызывается, когда процессор пытается выполнить
недопустимые инструкции.
•
ESingleStep - аналогично EBreakpoint, это исключение
происходит
18
при пошаговом выполнении
• EPropertyError - вызывается в случае ошибок в редакторах свойств,
встраиваемых в IDE Delphi. Имеет большое значение для написания
надежных property editors. Определен в модуле DsgnIntf.pas.
• EResNotFound - происходит в случае тех или иных проблем, имею-
щих место при попытке
режиме дизайнера. Часто
шение соответствия между определением класса формы и ее описа-
нием на уровне ресурса (
следования полей-ссылок на
режиме дизайнера).
• EStreamError - предок исключений, вызываемых при работе с пото-
ками.
• EFCreateError - происходит в случае ошибок создания потока (на-
пример, при некорректном задании файла потока).
• EFilerError - вызывается при попытке вторичной регистрации уже
зарегистрированного класса (компоненты). Является, также, предком
специализированных
работе с классами компонент.
3.3. Восприятие ввода от
Обратим особое внимание на одно качество, характерное для многих
управляющих
элементов – фокус. Как
ет
фокус ввода? В каждый
ле. Вы
можете перемещать фокус,
шью по другому компоненту. Каждый раз когда компонент получает или те-
ряет
фокус, к нему приходит
что пользователь достиг (OnEnter) или покинул (OnExit) компонент.
При использовании компонента Edit для ввода чисел пользователь вме-
сто цифры может набрать букву. Функции преобразования вернут код
ошибки,
что поможет определить
можно выполнить такую проверку? Возможно, когда изменится значение
блока редактирования, когда компонент потеряет фокус или когда пользова-
тель щелкнет по некоторой кнопке в диалоговой панели. Можно просматри-
вать
входной поток в блоке
словой
код.
4. Порядок
выполнения работы
1. В среде программирования Delphi cоздайте новый проект, выбрав пункт
меню File/New Application.
2. Сохраните
этот проект в папке"С:\Ваша_
(Unit1.pas под новым именем Main2.pas, а Project1.dpr под новым именем
Lab2.dpr).
3. Разработайте приложение, обрабатывающее исключительную ситуацию,
согласно вашему варианту
4. Открыть новое приложение.
5. Создать
форму с пятью полями
щими надписями, которые
соответствующий компонент
проверки содержимого первого поля редактирования.
Событие 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 выполняет аналогичную проверку при каждом
изменении его содержимого (
♦ Записать код для события события OnKeyPress компонента Edit4 и про-
верить, не является ли введенный символ числом или клавишей Back-
space (которая имеет числовое
begin
if not ( key in [ ‘0’ . . ‘9’ , # 8] } then
begin
Key := # 0 ;
MessageBeep ($ FFFFFFFF) ;
end;
end;
♦ Для события OnEnter компонента Edit5 записать код, в котором необхо-
димо преобразовать введенные символы в число с помощью функции
StrToInt. Использовать исключение для
обработки ошибки EConvertError.
5. Варианты
индивидуальных заданий
1. Создать программу,
которые программа разделит. Необходимо поместить на форму три
объекта класса TEdit - два для операндов, один – для результата и
кнопку (объект класса TButton), нажимая на которую пользователь
выполняет деление. Исключить попытку деления на ноль а так же
введения символов вместо цифр.
Выдать сообщение о типе
шей ошибке.
2. Создать программу,
(ax2+bx+c=0). Необходимо поместить на форму четыре объекта
класса TEdit - три для коэффициентов квадратного уравнения, один
– для результата и кнопку (объект класса TButton), нажимая на кото-
рую пользователь выполняет нахождение корней. Исключить ввод
символов вместо цифр, получение отрицательного дискриминанта и
ввод а = 0. Вывести при всех типах ошибок одно и то же сообщение.
3. Создать программу с “
увеличивать переменную I до значения, заданного пользователем.
При достижении этого значения выходить из цикла с помощью воз-
буждения исключения EAbort. Выдать сообщение о выходе из цикла
в блоке Except. Необходимо поместить на форму кнопку (объект
класса TButton), которая запускает цикл; сообщение можно выдать с
помощью функции ShowMessage, или поместить на форму метку
(объект класса TLabel), в которую помещается сообщение.