Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р3_Контроль_ печать.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
319.49 Кб
Скачать

Пример 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,  Object TreeViewButton1 Object 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.

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

Текст процедуры обработки события с проверкой пустых полей ввода и деления на 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;