Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

Помогите разобраться с калькулятором   Найти похожие ветки 

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

хотел соорудить калькулятор:
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;
все это программируется на кнопку, но че-то где-то пропустил...
поправьте пожалуйста


 
DVM ©   (2006-10-28 23:33) [1]


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

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


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

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) [3]

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


 
Ketmar ©   (2006-10-28 23:41) [4]

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


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


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

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


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

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

а зря...


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

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


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

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


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


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

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


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

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:57) [11]

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

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


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

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


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

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2006.11.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.583 c
2-1161612916
evgenij_
2006-10-23 18:15
2006.11.12
tab.Filter


15-1161775937
Шариков
2006-10-25 15:32
2006.11.12
Опера на яве !!


8-1144338190
QuickFinder
2006-04-06 19:43
2006.11.12
TShockwaveFlash и его свойство Align


15-1161687997
loginnn
2006-10-24 15:06
2006.11.12
Настройка интернета через сеть


15-1161645505
Makhanev Alexander
2006-10-24 03:18
2006.11.12
7200rpm in the notebook....