Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите разобраться с калькулятором [D7]


Уця Шпиндель ©   (2006-10-28 23:29:00) 

хотел соорудить калькулятор:
3 Label(в первых двух слагаемые и другие, в 3-м сумма и т.д.), 1 combobox(действия выбирать), 1 button(вычислить)
вот код:
var
num1:real;
 num2:real;
begin
 num1:=StrtoFloat(edit1.text);
 num2:=StrtoFloat(edit2.text);
 if combobox1.text='/' then edit3.Text FloattoStr(num1/num2);
 if combobox1.text='*' then edit3.Text FloattoStr(num1*num2);
 if combobox1.text='-' then edit3.Text FloattoStr(num1-num2);
 if combobox1.text='+' then edit3.Text FloattoStr(num1+num2);
 end;
все это программируется на кнопку, но че-то где-то пропустил...
поправьте пожалуйста


Орион   (2006-10-29 00:07:00) [1]

> [13] Ketmar ©   (29.10.06 00:06)

там тоже метод тыка используется... метод тыка пальцем в Ф1 =)


Ketmar   (2006-10-29 00:06:00) [2]

>[12] Уця Шпиндель(c) 29-Oct-2006, 00:03
>метод тыка РУЛЕЗЗ!
а справка -- вообще рулез немеряный.


Уця Шпиндель   (2006-10-29 00:03:00) [3]

нашел!
ето в Items прописывается.
З.Ы.
метод тыка РУЛЕЗЗ!
З.З.Ы.
всем большое спасибо, что откликнулись.


Орион   (2006-10-28 23:57:00) [4]

> [9] Уця Шпиндель ©   (28.10.06 23:49)

а это будет домашним заданием ;)


DVM   (2006-10-28 23:55:00) [5]

procedure TForm1.Button1Click(Sender: TObject);
var
num1, num2, res: real;
begin
try
  num1 := StrtoFloat(edit1.text);
except
  // Ошибка
  exit;
end;
try
  num2 := StrtoFloat(edit2.text);
except
  // Ошибка
  exit;
end;
case combobox1.text[1] of
 '/': if num2 <> 0 then res := num1 / num2 else exit; // Ошибка
 '*': res := num1 * num2;
 '-': res := num1 - num2;
 '+': res := num1 + num2;
end;
Edit3.Text := FloatToStr(res);
end;
end.


Уця Шпиндель   (2006-10-28 23:49:00) [6]


> а всё проще. ":=" после edit3.text пропустил. %-)

точно!
а как в сombobox прописывать действия?(ну / * - + )


Орион   (2006-10-28 23:48:00) [7]

:) FloatToStr конечно же :)


Орион   (2006-10-28 23:47:00) [8]

и еще, Edit3.Text:=FloatToStr(...);а каждой строке, как минимум глупо.
Лучше что-то вроде CalcRes:=num1(/,*,-,+)num2, а в конце Edit3.Text:=StrToFloat(CaclRes);


Орион   (2006-10-28 23:45:00) [9]

> [5] Уця Шпиндель ©   (28.10.06 23:44)

а зря...


Уця Шпиндель   (2006-10-28 23:44:00) [10]


> деление на 0? ну и черт с ним :)

я тоже так думаю ..))


Ketmar   (2006-10-28 23:41:00) [11]

а всё проще. ":=" после edit3.text пропустил. %-)


Орион   (2006-10-28 23:36:00) [12]

procedure TForm1.Button1Click(Sender: TObject);
var
 num1, num2: Extended;
begin
 num1:=StrToFloat(Edit1.Text);
 num2:=StrToFloat(Edit2.Text);
 //не мешало бы проверку вставить на содержание Edit1/2.Text, ну да ладно :)

 case ComboBox1.ItemIndex of
   0: Edit3.Text:=FloatToStr(num1/num2); //деление на 0? ну и черт с ним :)
   1: Edit3.Text:=FloatToStr(num1*num2);
   2: Edit3.Text:=FloatToStr(num1-num2);
   3: Edit3.Text:=FloatToStr(num1+num2);
 end;

end;


DVM   (2006-10-28 23:36:00) [13]

если в edit1 или edit2 будет что-то, что не преобразовать в число - возникнет исключение.
если при делении делитель = 0 то возникнет исключение
и т.д.


DVM   (2006-10-28 23:33:00) [14]


> но че-то где-то пропустил...

Проверки на допустимость значений


Наверх

Титульная страница Поиск, карта сайта Написать письмо