Пример 3. Вычисление арифметического выражения

Дано: выражение Y:= A/(5-X);

текстовое поле LabeledEdit1 – для ввода значения A;

текстовое поле LabeledEdit2 – для ввода значения X;

текстовое поле LabeledEdit3 – для вывода значения Y;

процедура TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char) обеспечивает контроль ввода вещественных значений переменной A, аналогично примеру 1 или 2;

процедура TForm1.LabeledEdit2KeyPress(Sender: TObject; var Key: Char) обеспечивает контроль ввода вещественных значений переменной X;

Требуется: разработать процедуру, обеспечивающую вычисления значения Y после наступления события «Нажатие кнопки» (событие OnKeyPress).

 

После установки компонента TButton назначим событие OnKeyPress, 1 Object TreeView®Button1 1Object Inspector ®ÌEvents ®OnKeyPress, в разделе interface будет объявлена процедура Button1Click(Sender: TObject).

В разделе implementation появится текст шаблона этой процедуры.

 

Текст, добавленный разработчиком, выделен курсивом.

procedure TForm1.Button1Click(Sender: TObject);

Var A, X, Y: Real; //описание локальных переменных

Begin

{Преобразование строковых значений полей в вещественные переменные А и Х }

A:= StrToFloat( LabeledEdit1.Text);

X:= StrToFloat(LabeledEdit2.Text );

Y:= A/(5-X); //вычисление Y

{Преобразование вещественной переменной Y в строковое значение и вывод в поле LabeledEdit3}

LabeledEdit3.Text:=FloatToStr(Y);

End;

……….

Недостатки программы:

· аварийное завершение в случаях пустых значений в полях ввода;

· аварийное завершение при Х=5

Процедура ShowMessage

ShowMessage(const Msg: string) - выводит простое окно сообщения с кнопкой OK, и останавливает выполнение программы до нажатия кнопки.

Msg – строковая константа - сообщение

Заголовок окна сообщения соответствует названию приложения.

Пример 4. Простое сообщение

Дано: программа, вычисляющая выражение Y:= A/(5-X), см. пример 3.

Требуется: для исключения аварийного завершения программы, дополнить процедуру TForm1.Button1Click сообщениями о пустых полях ввода А и Х, и деления на 0 при Х=5.

 

На рисунке представлено окно сообщения, появляющееся при событии нажатия кнопки «Вычислить», если в окно Х не введено значение.

 

Введите А!
True
Начало
Схема алгоритма. Контроль пустых полей и деления на 0 procedure TForm1.Button1Click(Sender: TObject)    
Exit
Exit
поле LabeledEdit1 не пустое  
А присвоено значение поля LabeledEdit1  
Введите А!
False
поле LabeledEdit2 не пустое  
Х присвоено значение поля LabeledEdit2  
Х<>5  
Вычисление Y  
При Х=5 - деление на 0!
Конец
True
True
False
False
Вывод Y в поле LabeledEdit3  

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

 

procedure TForm1.Button1Click(Sender: TObject);

Var A, X, Y: Real; //описание локальных переменных

Begin

if LabeledEdit1.Text <> '' //поле А не пустое

thenA:= StrToFloat( LabeledEdit1.Text)

else begin ShowMessage('Введите А'); //сообщение

exit; //завершение процедуры

End;

if LabeledEdit2.Text <> '' //поле Х не пустое

thenХ:= StrToFloat( LabeledEdit2.Text)

else begin ShowMessage('Введите Х'); //сообщение

exit; //завершение процедуры

End;

if X <> 5 // проверка деления на 0 при Х=5

Then begin

Y:= A/(5-X);

LabeledEdit3.Text:=FloatToStrF(Y, ffGeneral, 5, 3);

{Формат вывода: всего знаков – 7, после запятой - 3}

End

else ShowMessage('При Х=5 - деление на 0');

End;