AFON//Радиотехник
C++Builder · проект 02/50

Сумматор двух чисел

Ввод чисел через Edit, сложение с обработкой ошибок.

Задача

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

Компоненты на форме

Edit (EditA, EditB), Button (ButtonSum), Label (LabelResult).

Как работает

  1. Прочитать текст полей функцией StrToFloat.
  2. Обернуть чтение в try/catch — при ошибке показать подсказку.
  3. Вывести сумму через FormatFloat.

Исходный код модуля

//---------------------------------------------------------------------------
// Проект 2. Сумматор двух чисел
// Ввод чисел через Edit, обработка ошибок StrToFloat.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------

// Читаем два числа из полей ввода. StrToFloat кидает исключение на мусоре —
// ловим его и подсказываем пользователю, а не роняем программу.
bool ReadFloat(TEdit *e, double &out)
{
    try { out = StrToFloat(e->Text); return true; }
    catch (...) { return false; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonSumClick(TObject *Sender)
{
    double a, b;
    if (!ReadFloat(EditA, a)) { LabelResult->Caption = "A: не число"; return; }
    if (!ReadFloat(EditB, b)) { LabelResult->Caption = "B: не число"; return; }
    LabelResult->Caption = "Сумма: " + FormatFloat("0.######", a + b);
}
//---------------------------------------------------------------------------

Пояснения

  • StrToFloat кидает исключение EConvertError на нечисловом вводе — его нужно ловить.
  • FormatFloat("0.######", x) убирает лишние нули.
  • Отдельная функция ReadFloat не повторяет try/catch для каждого поля.
📦 help-user.ru — срочный ремонт компьютеров и восстановление данных в Москве: help-user.ru.

Что дальше

Создайте в C++Builder новый проект, разместите перечисленные компоненты и вставьте код модуля. Остальные 49 программ — в разделе проектов на C++Builder; смотрите также обзор среды и контроллеры AVR.