Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Указания к выполнению работы
Этап 1. На этом этапе требуется создать новое приложение, расположить на форме компонент для выбора графических файлов TOpenPictureDialog, кнопку любого типа и добавить в текст программы, в раздел uses, модуль с названием ComObj. Первым делом в обработчике события OnClick для кнопки объявите переменную для создания сервисного процесса OLE (предварительно проверьте, установлен ли на вашем ПК текстовый процессор Microsoft Word, если нет, то выполнение и демонстрация создаваемого приложения невозможны):
Word : OleVariant;
Проинициализируйте её:
Word := CreateOleObject ('Word.Basic'); // Создать процесс-сервер "Word Basic"
Этап 2. После операторов инициализации, пользуясь связью с сервером через переменную Word, внесите в текст программы алгоритм формирования и сохранения документов (применяйте при этом операторы языка Word Basic, описание которых имеется в справочной системе по Microsoft Office), например:
MessageBox(0, 'Укажите графический файл для комплектации документа', 'Внимание!', mb_OK); if OpenPictureDialog1.Execute then begin // Создать новый документ по шаблону "Normal" Word.FileNew ('Normal'); // добавить в него три строки текста: Word.Insert ('Документ test.doc создан по технологии OLE'#13#13); Word.Insert ('Это вторая линия документа'#13); Word.Insert ('А это третья'#13); // добавить рисунок Word.InsertPicture (OpenPictureDialog1.FileName); Word.Insert (#13); // перевести строку Word.InsertDateTime; // указать время // сохранить документ Word.FileSaveAs (директория:\[каталог\]имя файла.doc, 0); Word.FileNew ('Normal'); // создать ещё один документ Word.Insert ('Новый документ'#13); // добавить в него одну строку Word.AppShow; // показать редактор с открытыми файлами end;
Соответственно вместо выражения "директория:\[каталог\]имя файла.doc" требуется указать имя файла с полным путём к нему (в одиночных апострофах) для сохранения документа. Выполнение операторов, начиная с
Word := CreateOleObject ('Word.Basic');
по
Word.AppShow;
требуется защитить при помощи конструкции:
try // выполнить следующее … except // в случае ошибки: … end;
Для корректного завершения программы при условии отсутствия установленного текстового процессора (в случае возникновения исключительной ситуации) нужно задать выполнение следующих действий:
MessageBox (0, 'Ошибка при создании документа', 'Внимание!', mb_OK); // выдать сообщение Close; // и закрыть окно программы
Этап 3. Откомпилируйте проект. Запустите на выполнение EXE - файл. При запросе на указание графического файла выберите любой (например, в формате BMP из директории Windows). После просмотра созданных doc-файлов (в запущенном из проекта редакторе Microsoft Word) закройте окно текстового процессора и окно Вашего приложения. Запустите отдельно программу Microsoft Word, откройте созданный (и сохранённый из Вашего проекта) документ, продемонстрируйте его содержимое преподавателю.
Контрольные вопросы и задания
1. Что такое OLE-клиент? 2. Что такое OLE-сервер? 3. Можно ли сформировать и сохранить файл документа MSWord, не запуская оболочки редактора этого приложения? Как это сделать? 4. Как запустить процесс-сервер Word Basic? 5. Будет ли работать программа, написанная Вами, на ПК, где не установлен MSOffice? Почему? 6. Ваша программа является OLE-клиентом или OLE-сервером? Объясните.
Лабораторная работа №9 (2 часа)
Обработка исключительных ситуаций
Цель: освоить технологию обработки исключительных ситуаций в среде Delphi. Оборудование: ПЭВМ IBM PC-AT. Программные средства: ОС семейства Windows, среда Delphi 5.* (или выше).
Задание
Разработать приложение, генерирующее и обрабатывающее исключения на основе варианта задания, согласованного с преподавателем. Вариант задания определить на основе следующего списка. 1. Создать программу, позволяющую пользователю ввести два числа, для выполнения операции деления. Необходимо поместить на форму три объекта класса TEdit – два для операндов, один – для результата и кнопку (объект класса TButton), нажимая на которую пользователь выполняет деление. Исключить попытку деления на ноль, а так же введения символов вместо цифр. Выдать сообщение о типе возникшей ошибке. 2. Создать программу, вычисляющую корни квадратного уравнения (ax2+bx+c=0). Необходимо поместить на форму четыре объекта класса TEdit – три для коэффициентов квадратного уравнения, один – для результата и кнопку (объект класса TButton), нажимая на которую пользователь выполняет нахождение корней. Исключить ввод символов вместо цифр, получение отрицательного дискриминанта и ввод а = 0. Вывести при всех типах ошибок одно и то же сообщение. 3. Создать программу с "бесконечным" циклом типа while. В цикле увеличивать переменную i до значения, заданного пользователем. При достижении этого значения выходить из цикла с помощью возбуждения исключения EAbort. Выдать сообщение о выходе из цикла в блоке Except. Необходимо поместить на форму кнопку (объект класса TButton), которая запускает цикл; сообщение можно выдать с помощью функции ShowMessage, или поместить на форму метку (объект класса TLabel), в которую помещается сообщение. 4. Создать программу, вычисляющую тангенс угла. Необходимо поместить в форму два компонента TEdit для ввода значения и результата и кнопку TButton для вычисления значения тангенса. Исключить ввод символов вместо цифр и получение значения тангенса угла 90 градусов. Предусмотреть возможность ввода значений в радианах. 5. Создать программу, вычисляющую логарифм числа. Для этого необходимо поместить в форму два компонента TEdit для ввода значения и результата и кнопку TButton для вычисления значения логарифма. Исключить ввод символов вместо цифр и получение значения логарифма 0. 6. Создать программу обработки исключения при обращении к несуществующему элементу массива. В форму поместите поля редактирования для ввода – вывода значений и номеров элементов массива и кнопку для обработки события.
Программа работы
1. Ознакомиться с основными понятиями и конструкциями обработки исключительных ситуаций. 2. В соответствии с заданием определить перечень предопределенных исключений Delphi для использования в своем приложении. 3. Разработать приложение, обрабатывающее исключительную ситуацию, согласно варианту индивидуального задания. 4. Запустить разработанное приложение и смоделировать ситуацию для возникновения исключения. 5. Проверить правильность запрограммированной реакции приложения. 6. Выявить и исправить ошибки. 7. Продемонстрировать результаты выполнения работы преподавателю.
Пояснения к работе
Любой запрос к операционной системе для получения ресурсов (места на диске, в памяти, открытие файла) может завершиться неудачно. Любое вычисление может закончиться делением на ноль или переполнением. В таких случаях говорят, что при выполнении кода возникла исключительная ситуация (или просто: исключение). Дополнительный фактор возникновения исключительных ситуаций содержится в данных, с которыми работают программы. Традиционный способ корректной обработки исключительных ситуаций состоит в создании многочисленных проверок. Хорошо, если в конце очередной конструкции if … then можно просто поставить оператор exit. Обычно же для корректного выхода из ситуации нужно отменить целую последовательность действий, предшествующих неудачному. Все это сильно запутывает программу, размывая структуру главного алгоритма. При разработке приложений в Delphi программист имеет возможность использовать несколько механизмов, обеспечивающих обработку исключительных ситуаций. Это и специальные операторы языка Delphi, и классы, предназначенные для программирования реакции на ошибки. На этапе выполнения Delphi порождает исключения, когда какой-либо процесс идет неправильно. С точки зрения языка Delphi исключительная ситуация – это объект. Если код вашей подпрограммы написан соответствующим образом, он может распознать возникшую проблему и попытаться ее решить; в противном случае объект-исключение передается в код, который вызвал вашу подпрограмму и т.д. В конечном счете, если никто не обработал исключение, его обрабатывает Delphi, выводя на экран стандартное сообщение об ошибке и пытаясь продолжить выполнение программы. Весь механизм строится на следующих ключевых словах: try – определяет начало защищенного блока кода; except – определяет конец защищенного блока кода и вводит операторы обработки исключений в следующем виде: on <тип исключения> do <оператор>; finally – указывает необязательный блок, который используется для освобождения ресурсов, распределенных в блоке try перед обработкой исключения; этот блок завершается ключевым словом end; raise – оператор, используемый для порождения исключений. Большинство исключений, которые вы встретите при программировании на Delphi, будут порождаться системой, но вы также можете создать их в собственном коде, когда во время выполнения обнаружатся недопустимые или несогласованные данные. Кроме того, ключевое слово raise можно использовать внутри обработчика для повторного порождения исключения, т.е. для передачи его следующему обработчику. Если вы хотите, чтобы при правильной обработке исключений программа продолжала выполняться, отключите опцию отладки Break on Exception в окне Environment Options. При возникновении исключительной ситуации директивы просматриваются последовательно, в порядке их описания. Каждый тип исключительной ситуации, описанный после ключевого слова on, обрабатывается именно этим блоком: только то, что предусмотрено в нем, и будет являться реакцией на данную ситуацию. Перечень предопределенных исключений Delphi представлен в табл. 9.1. Таблица 9.1
Продолжение табл. 9.1
Продолжение табл. 9.1
Обратим особое внимание на одно качество, характерное для многих управляющих элементов, – фокус. В каждый конкретный момент фокус имеет только одно поле. Вы можете перемещать фокус, используя клавишу Tab или щелкая мышью по другому компоненту. Каждый раз, когда компонент получает или теряет фокус, к нему приходит соответствующее событие, которое указывает, что пользователь достиг (OnEnter) или покинул (OnExit) компонент. При использовании компонента Edit для ввода чисел пользователь вместо цифры может набрать букву. Функции преобразования позволяют вернуть код ошибки, что поможет определить, действительно ли введено число. Выполнение такой проверки возможно тогда, когда изменится значение блока редактирования, когда компонент потеряет фокус или когда пользователь щелкнет по некоторой кнопке в диалоговой панели. Также возможно просматривать входной поток в блоке редактирования и останавливать любой нечисловой код.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-05-27; просмотров: 217. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |