Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2009, 16:33   #1
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию Калькулятор.

Добрый день, я недавно начал программировать в дельфи, и 1ой из моих первых программ, с которыми мне пришлось столкнутся стал калькулятор(полистал другие подобные темы, но подходящих решений для себя не нашел), проблема заключается в следующем: я не могу написать процедуру для вывода данных, после нажатия кнопки равно, т.е. эта процедура должна выполнять вычитание или сложение исходя из ранее введеных переменных, и мне нужно установить условие, но не знаю как его правильно оформить, вот код:

Код:
procedure TForm1.btn10Click(Sender: TObject); // Это процедура для кнопки "+" сложения
begin
a:=StrToInt(edt1.Text);
edt1.Text:='0';
end;

procedure TForm1.btn6Click(Sender: TObject);// Это процедура для кнопки "-" вычитания
begin
a:=StrToInt(edt1.Text);
edt1.Text:='0';
end;

procedure TForm1.btn15Click(Sender: TObject);
begin
if -------- then // вот здесь необходимо задать условие, как я понимаю, которое отвечает логической операцией, если используем procedure TForm1.btn10Click, тогда - То что описано ниже строчкой, ну, а если не используем соответственно ниже др. строчкой, дак вот как объяснить это машине?
edt1.Text:=IntToStr(StrToInt(edt1.Text)+a) else
edt1.Text:=IntToStr(StrToInt(edt1.text)-a)
end;
end.
Да чуть не забыл, кулькулятор предельно простой, должен только уметь складывать и вычитать.
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!

Последний раз редактировалось Stilet; 17.09.2009 в 16:46.
Bilargo вне форума Ответить с цитированием
Старый 17.09.2009, 16:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Неудачную ты стратегию взял... Ну в крайнем случает тебе можно использовать левую переменку, где будет фиксироваться какая кнопка нажата:
Код:
procedure TForm1.btn10Click(Sender: TObject); // Это процедура для кнопки "+" сложения
begin
tag:=1;
a:=StrToInt(edt1.Text);
edt1.Text:='0';
end;

procedure TForm1.btn6Click(Sender: TObject);// Это процедура для кнопки "-" вычитания
begin
tag:=2;
a:=StrToInt(edt1.Text);
edt1.Text:='0';
end;

procedure TForm1.btn15Click(Sender: TObject);
begin
if  tag=1 then 
edt1.Text:=IntToStr(StrToInt(edt1.Text)+a) else
edt1.Text:=IntToStr(StrToInt(edt1.text)-a)
end;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2009, 17:06   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Написал бы примерно так:
Код:
  TCalc = Record
    x:extended;
    oper:char;
    result:extended;
  End;

var
  Form1: TForm1;
  calc:tcalc;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
calc.x:=StrTofloat(edit1.Text);
calc.oper:='+';
edit1.Text:='0';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
calc.x:=StrTofloat(edit1.Text);
calc.oper:='-';
edit1.Text:='0';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if calc.oper='+' then
calc.result:=calc.x+StrTofloat(edit1.Text);
if calc.oper='-' then
calc.result:=calc.x-StrTofloat(edit1.Text);
edit1.Text:=floattostr(calc.result);
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 17.09.2009, 17:21   #4
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию

Стилет спасибо, ты мой спаситель)))
Честно сказать, я вообще не знал, как сделать эту примочку к нажатой кнопке, теперь знаю, примерно такое я и задумывал, когда писал программу, я знаю, что не самая удачная конструкция, но вот мне хотелось разобраться именно с этой ситуацией, и я не хотел сдавать позиции)))
Но вот сейчас проблема с выводом, почему-то получается так:
Пр.: 9-6=-3, и всё по аналогии с минусом возвращает, а если допустим взять так, 7-8=1, непорядок...
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Старый 17.09.2009, 17:26   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Здесь ошибка:
Код:
edt1.Text:=IntToStr(StrToInt(edt1.text)-a)
Надо наоборот: (от сохраненного числа A отнять последнее значение из edt1, а у вас наоборот)
Код:
edt1.Text:=IntToStr(a-StrToInt(edt1.text))
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 17.09.2009, 17:33   #6
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию

Ммм....а ведь и правда, вот я невнимательный... Спасибо за помощь.
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
калькулятор FARGO Общие вопросы Delphi 1 14.12.2008 23:01
Калькулятор ViNcHeStEr Помощь студентам 5 23.11.2008 15:39
Калькулятор Димарик Общие вопросы Delphi 1 04.10.2008 15:52
Калькулятор Nixtone Помощь студентам 7 03.07.2008 23:17
Калькулятор =) noxer Microsoft Office Excel 1 29.04.2008 05:14