Дано: выражение 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 <> '' //поле А не пустое
then A:= 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;