Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Программирование!!!.docx
Скачиваний:
18
Добавлен:
04.04.2018
Размер:
219.34 Кб
Скачать

Класс tExeption

Класс общего назначения. Является родительским для выходных классов конкретных исключений.

Классы потомки: EdivByZero (ошибка цел. а/0 многочисленного деления на ноль (является потомком EZntError) EZeroDivide вещественное деление на 0 (EMathError) EFCreateError ошибка при создании файла (EStreanError) EUnderflow(с плавающей точкой (исчезновения порядка, чтобы уместиться в регистор процессора) EOverflow переполнение порядка. Слишком велик EIntOutError любая ошибка по вводу и выводу (ErrorCode) EABort (тихая реакция на обработку любой ошибки ( без выдачи сообщения))

Замечания:

Ищется самый первый из вложенный обработчиков исключения

Пр. Если 1ый стоит EAbort, который может обработать исключения, то не один из стоящих на ним обработчиков не получит управление. При возникновении исключения объектов класса создает и удаляет. Если программист желает использовать поля или методы обработки ,то он должен поименовать автоматически созданный объект. Для этого перед именем класса вставляется идентификатор и :

Пр. При обработке исключения класса EintoutError для программиста представлен интерфейс ErrorCode

Try Reset(F); while not eof(F) do read (F,..); closefile(f); except on E:EInOutError do showmessage (ошибка при работе с файлом; код ошибки:=+InToSte(E.ErroreCode)); end;

Создание нового класса исключения

Иногда необходимо инициировать собственное исключение. Для этого объявляем класс потомок от TException (под type), затем нужен способ сигнализировать, что возникло исключение (возбуждение исключения). Для возбуждения исключения используется raise и создается новый объект исключения с помощью конструктора. Он принимает один параметр является сообщением ассоциированным исключением.

Raise EInOutError.Create(‘Ошибка ввода и вывода'); Пр. Создадим новый класс с именем EIError. Будем возбуждать ошибки исключения класса при обнаружение ввода (нужны числа >0)

Type EIError=class[EAbort]; var F:text FIle; s:string; k:integer; begin assignfile(F,file1.txt’); try //блок защиты reset(F); while not EOF(F) do begin readln(F,S); k:=strtoint(S); if k<=0 then raise EIError.Create(‘число>0!’); end;

Есть еще один механизм защищенного блока - блок финализации

Try {защитный код} finaly {оп-ры} closefile(F); end; Отличительным способом обработки исключений. Получает управление всегда не зависимо возникновению исключений или нет.

Компоненты страницы Dialogs

В состав windows входят ряд типовых диалогов окон: шрифта,файла. В делфи реализованы классы и объекты, которые дают возможность динамического создания и использования окон. На панели dialogs расположены ряд невидимых компонентов, позволяет ведеть стандартные диалоговые окна windows. Относится ко всем окнам. Эти компоненты не предназначены для получения от пользования желаемых значений настроек.

TCommonDialog

Все эти компоненты являются его наследниками (TcommonDialog). Самый важный метод этого класса это функция Function Execute:Boolean; Она выполняет открытия соответствующего окна и возвращает значение истины если пользователь щелкнул при выходе из окна диалога на кнопки Ок. при открытии окна в первый раз возникает событие onShow. При закрытии onClose. Работа со стандартным диалоговым окном составляется в 3 этапа:

  1. Сначала на форму вставляется соответствующий компонент со страницы Dialogs и осуществляется настройка его свойств. Настроить свойства можно статически или динамически в программе. Вызовы конструктора и деструктора для всех этих окон осуществляется автоматически в момент старта и завершения программы.

  2. На втором этапе вызывает метод ex для создания и показа настроенного окна на экране. Окно диалога является модальным. Т.е. после выполнения методы execute программа останавливается до тех пор пока не закроется предъявленное окно.

If SaveDialogs.Execute then….

Else edit1.Text:=»не успешная работа с диалоговым окном»

  1. Проанализировав результат программа может выполнять 3 этап: использовать введение с помощью диалогового окна. Выбранный путь к файлу с помощью окна автоматически сохраняется в Filename.

If SaveDialogs.Execute then….memo1.Lines.SavetoFile(SaveDialog1.FileName)

Else edit1.Text:=»не успешная работа с диалоговым окном».