Создание процедуры вычисления результата 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание процедуры вычисления результата



Создаваемая процедура должна обеспечить суммирование чисел, записанных в полях редактирования Edit1 и Edit2, и вывод результата в поле Edit3 при нажатии на кнопку «+».

Задача простая, и можно попытаться решить ее следующим образом. Активизируем окно Object Inspector, выбираем компонент btnPlus, открываем закладку Event, находим событие onClick, дважды щелкаем по пустому полю имени процедуры и получаем ее шаблон в редакторе кода.

Рисунок 1.11 – Шаблон процедуры сложения чисел

Теперь остается описать суммирование чисел, записанных в полях редактирования Edit1 и Edit2, и вывод результата в поле Edit3. Можно попытаться описать это следующим образом.

Edit3.text:= Edit1.Text + Edit2.Text;

В этой строке мы говорим компьютеру: «Возьми то, что записано в поле Edit1, сложи с тем, что записано в поле Edit2, и результат запиши в поле Edit3».

Но если такая процедура будет выполнена, то мы увидим, что она складывает не числа, а строки символов. Например, если сложить 22 и 33, то получим 2233.

Для того чтобы получить правильный результат необходимо вначале строки преобразовать в числа. Для этого можно использовать стандартную функцию StrToFloat(). В эту функцию строка символов передается как аргумент. Функция преобразует ее в число и возвращает в виде результата. Выражение для сложения чисел введенных в поля Edit1 и Edit2 будет выглядеть так: StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text).

Теперь результат сложения будет числом, но возникает другая проблема. Если мы запишем тело процедуры в таком виде:

Edit3.text:= StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text);

то при попытке выполнить сложение получим сообщение об ошибке. Вид окна редактора кода с сообщением об ошибке представлен на рисунке 1.12.
Ошибка заключается в том, что мы пытаемся присвоить строке символов значение числа. В языке Паскаль такие присваивания недопустимы. Типы данных слева и справа от знака присваивания должны быть подобными.

Рисунок 1.12 – Окно редактора кода с сообщением об ошибке

Для того, чтобы устранить эту ошибку следует перед присваиванием преобразовать результат сложения чисел в строку символов. Для этого можно использовать функцию FloatToStr(). В результате тело процедуры станет таким:

Edit3.text:= FloatToStr(StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text));

На этом можно было бы закончить создание процедуры, но приложение с такой процедурой будет часто завершаться аварийно. Происходить это будет в тех случаях, когда пользователь ошибется при вводе исходных данных. Например, вместо цифры введет букву.

Пользователь имеет право ошибаться, но приложение аварийно завершаться не должно, вместо этого оно должно сообщать пользователю о его ошибке и давать возможность ее исправить.

В Delphi такая проблема решается довольно просто. Посмотрите на окончательный вариант процедуры на рисунке 1.13.

В процедуре использована конструкция try … except … end, которая позволяет решить поставленную выше задачу.

 

Рисунок 1.13 – Окончательный вариант процедуры сложения

При выполнении такой конструкции Delphi будет пытаться выполнить инструкции, записанные между служебными словами try и except. Если проблем при этом не возникнет, то инструкции, записанные между словами except и end, будут проигнорированы. Но если возникает исключительная ситуация, то Delphi не прерывает выполнение приложения, а переходит к выполнению инструкций между словами except и end. В нашем примере, в случае возникновения исключительной ситуации, на экране появится окно с сообщением «Ошибка в исходных данных».

Есть одна особенность в тестировании приложений с обработкой исключительных ситуаций. Если вы запускаете приложение из ИСР, то Delphi обработает исключение раньше вашего приложения, выдаст сообщение об ошибке, и приостановит работу приложения. Для того, чтобы продолжить работу приложения и увидеть его реакцию на ошибку, закройте окно с сообщением ИСР, и вызовите функцию главного меню Run->Run. Приложение продолжит работу, и вы увидите его реакцию на ошибку.

Удобнее тестировать обработку исключений, работая с откомпилированным файлом проекта (.exe файлом), запуская его напрямую.

Улучшение проекта

Созданный проект решает задачи, поставленные перед ним, но и имеет некоторые недостатки. Один из них состоит в том, что при подготовке к повторным вычислениям предыдущий результат остается в поле результата, хотя исходные данные меняются. Это создает иллюзию того, что проект работает неправильно. Чтобы устранить этот недостаток, воспользуемся событием onChange для полей Edit1 и Edit2. Это событие происходит тогда, когда содержимое поля изменяется.

Процедура, обрабатывающая это событие должна очищать поле Edit3.

Для создания этой процедуры откройте закладку «События» в окне инспектора объектов. Выберите в окне инспектора объектов компонент Edit1, найдите событие onChange и сделайте двойной щелчок по пустому полю имени. В поле появится имя Edit1Change. Замените имя Edit1Change на имя EditChange. Такую замену мы делаем в связи с тем, что процедура будет связана не только с полем Edit1, но и с полем Edit2.

Дважды щелкните по новому имени и убедитесь, что имя шаблона процедуры тоже изменилось.

Далее найдите в списке объектов окна инспектора компонент Edit2, установите событие onChange и выберите из списка имен процедур имя EditChange.

Теперь событие onChange обоих компонентов связано с одной и той же процедурой.

Напомним, что процедура должна очищать поле Edit3, а очистку всех полей мы делали в процедуре инициализации. Написать процедуру не сложно, можно даже скопировать одну стоку из ранее написанной процедуры. На рисунке 1.14 приведено окно с текстом этой процедуры.

Рисунок 1.14 – Процедура очистки поля Edit3

Посмотрите, как работает измененное приложение.

Практика программирования показывает, что улучшать проекты можно до бесконечности, но мы не пойдем по этому пути и разработку проекта на этом закончим.

Сохранение проекта

Для сохранения проекта целесообразно создать специальный каталог на рабочем диске, так как в состав проекта входит много файлов. Можно назвать его Calculator1.

Для сохранения формы и ее модуля следует активизировать форму или текст модуля и вызвать из главного меню функцию File->SaveAs. В открывшемся диалоге сохранения файла нужно ввести имя файла. Имя должно быть понятным, поэтому рекомендуем имя UnitCalculator1. Введите имя. Убедитесь, что установлен тип файла Delphi Units(*.pas) и правильно выбрана папка для сохранения модуля. После этого нажмите клавишу «Сохранить».

Для сохранения файлов проекта следует вызвать из главного меню функцию File->SaveProjectAs. В качестве имени файлов проекта рекомендуем вам имя ProjectCalculator1. Введите имя. Убедитесь, что установлен тип файла DelphiProject(*.dpr) и правильно выбрана папка для сохранения модуля. Теперь нажмите клавишу «Сохранить».

После этого рекомендуем вам заглянуть в папку с проектом и убедиться, что файлы там действительно есть и размер у них не нулевой. Обязательно должны быть файлы ProjectCalculator1.dpr, UnitCalculator1.dfm, UnitCalculator1.pas.

Завершите сохранение файла копированием папки с проектом на личную дискету.

Сохранив проект, можете выти из Delphi.

Чтобы продолжить работу с проектом, запустите Delphi и вызовите из главного меню функцию File->Open Project. В появившемся диалоге открытия файла найдите папку с файлом проекта и откройте его.

1.2.5.1 Продолжение работы с проектом на другом компьютере

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

Чтобы упростить развертывание созданного приложения на новом компьютере можно использовать такую технологию.

Запустить Delphi и удалить из проекта, созданного по умолчанию, форму и модуль формы.

С помощью функции меню Project–>Add to Project добавить в проект ранее созданные формы и модули. Если форм несколько, то последней следует добавить стартовую форму.

После этого можно работать с приложением.

При такой технологии сохранять достаточно только файлы с расширениями.pas и.dfm.

1.3 Содержание отчета

– Наименование работы.

– Цель работы.

– Рисунок с изображением интерфейса одного из проектов (ProjectCalculator1 или доработанного ProjectLab1).

– Перечень компонент, использованных в проекте, с описанием их основных свойств.

– Текст модуля с пояснениями в виде комментариев для всех его основных элементов.

– Результаты тестирования проекта, в виде таблицы из трех колонок –данные и результат, в которой приводятся получаемые результаты для различных наборов данных, в том числе и ошибочных. Необходимо проверить работу приложения с целыми и вещественными числами, положительными и отрицательными, с разной формой записи, ошибочными данными.

– Выводы о работоспособности приложения и о возможностях Delphi программных проектов.

1.4 Контрольные вопросы и задания

– Порядок выполнения проекта.

– Работа с палитрой компонент.

– Работа с окном инспектора объектов.

– Работа в окне редактора кода.

– Свойства использованных в проекте компонентов.

– События, обрабатываемее в данном проекте.

– Файл проекта, его содержание и порядок выполнения.

– Модуль формы, его содержание и назначение разделов.

– Как сохранить проект.

– Добавить в проект кнопки для вычитания деления и умножения чисел и написать процедуры обработки данных для получения соответствующего результата.

– Обеспечить изменение надписи в компоненте Label1 в соответствии с выполненной операцией.

– Установить на форме кнопки, позволяющие увеличить и уменьшить на 1 размер шрифта в полях для ввода данных и написать соответствующие процедуры.

Рекомендованая литература

1. Культин Н. Delphi 6. Программирование на Object Pascal. – СПб.:БХВ-Петербург,2002.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 159; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.225.209.95 (0.044 с.)