Учебная программа CALC

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

Для упрощения ввода операндов и знака поместим на нашу учебную форму еще два компонента. Выберите File | New | Application, переименуйте компонент ibinput в ibinputi и сделайте его свойство width (длина) равным 121 (стандартная длина компонентов Edit), a свойство Left (слева) - 64. Справа от компонента ibinputi поместите компонент comboBox (страница Standard), назовите его cbSign (свойство Name) и установите для него width =41. Раскройте диалоговое окно свойства items этого компонента и введите четыре строки со знаками математических действий в такой последовательности:

+
-
*
/
И, наконец, справа от cbSign разместите еще один компонент Edit (страница Standard) и назовите его edinput2. He забудьте очистить свойства Text у всех трех компонентов.

Рис. 5.7. Окно программы CALC

procedure TfmExample.bbRunClick(Sender: TObject);
var
X, Y, Z: Real;
begin
{ Блокируем работу, если не введены операнды и не выбрано действие }
if (edInputl.Text='') or (edlnput2.Text='') or (cbSign.Itemlndex<0) then Exit;
// Проверяем правильность ввода 1-го операнда:
try // Начало защищенного блока
Х:= StrToFloat(Trim(edinputi.Text));
except // Обработка ошибки
ShowMessage('Ошибочная запись числа: '+edlnputl.Text);
edinputi.SelectAll;
Exit;
end; // Конец защищенного блока
// Проверяем правильность ввода 2-го операнда:
try // Начало защищенного блока
Y:= StrToFloat(Trim(edlnput2.Text));
except // Обработка ошибки
ShowMessage('Ошибочная запись числа: '+edlnput2.Text);
edlnput2.SelectAll;
Exit;
end;
// Конец защищенного блока
// Все правильно: вычисляем результат
case cbSign.Itemlndex of
0: Z:= X + Y;
1: Z:= X - Y;
2: Z:= X * Y;
3: try
Z:= X / Y; except
Z:= l.le+38; // Бесконечность при делении на О
end;
end;
// Показываем результат
IbOutput.Caption:= Trim(edinputi.Text)+' '+ cbSign.Items[cbSign.Itemlndex]+' '+ Trim(edlnput2.Text)+' = ';
if Z >= l.le+38 then
IbOutput.Caption:= IbOutput.Caption+'бесконечность'
else
IbOutput.Caption:= IbOutput.Caption+FloatToStr(Z);
mmOutput.Lines.Add(IbOutput.Caption);
// Очищаем ввод edinputi.Text:= '';
ed!nput2.Text:= ' ';
cbSign.ItemIndex:= -1;
end;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: