Страница 1 из 2

delphi калькулятор) снова...

Добавлено: 14 фев 2008, 01:38
the Gray Maybe
такой вопрос - не могу придумать ка сделать чтоб считалось знаком равно и действием (6+5 начимаем + он пишет 11, вводим допустим 8 и = он пишет 19). короч как в виндовсовском... уже через такую задницу делал... но стабильности добится не удалось) если можете обясните логику на примере двух или одного действия, допустим + или + и -.

Re: delphi калькулятор) снова...

Добавлено: 14 фев 2008, 11:36
Хыиуду
Просто запоминать последний знак действия. А вообще виндовский калькулятор на 6+5=8= выдаст 16. Угадайте, почему.

Re: delphi калькулятор) снова...

Добавлено: 14 фев 2008, 16:02
the Gray Maybe
знач все нормально, у меня тоже так))

Re: delphi калькулятор) снова...

Добавлено: 14 фев 2008, 17:41
Dr_Grizzly
Что-то я не пойму суть вопроса, или тема уже закрыта???

Re: delphi калькулятор) снова...

Добавлено: 14 фев 2008, 20:04
the Gray Maybe
суть вопроса: код чтоб калькулятор нормально считал не только при нажатии = но и других знаков. в моем коде поидее должен работать плюс равно и минус. для наглядности ехе файл (439кб) ps код корявый тут поудалял кусками - был слишком длинный

Код: Выделить всё



procedure TForm4.bdClick(Sender: TObject);
begin
if i=False then
begin
i:=true;
edit.text:=edit.text+',';
end;
end;


procedure TForm4.clrClick(Sender: TObject);
begin
edit.clear;
a:=0;
b:=0;
ch:=false;
i:=False;
end;




procedure TForm4.goClick(Sender: TObject);
begin
   if n='min' then begin
   b:=strtofloat(edit.Text);
   s:=b-a;
   i:=false;
   cha:=false;
   edit.text:=floattostr(s);
   ch:=true;
   n:='';
   end;
      if n='sum' then begin
   b:=strtofloat(edit.Text);
   s:=b+a;
   i:=false;
   cha:=false;
   edit.text:=floattostr(s);
   ch:=true;
   n:='';
   end;
      if n='mno' then begin
   b:=strtofloat(edit.Text);
   s:=b*a;
   i:=false;
   cha:=false;
   edit.text:=floattostr(s);
   ch:=true;
   n:='';
   end;
      if n='dil' then begin
   b:=strtofloat(edit.Text);
   s:=b/a;
   i:=false;
   cha:=false;
   edit.text:=floattostr(s);
   ch:=true;
   n:='';
   end;
end;

procedure TForm4.minClick(Sender: TObject);
begin if (n='')=false then begin

   if n='min' then begin
   b:=strtofloat(edit.Text);
   s:=a-b;
   i:=false;
   cha:=false;
   edit.text:=floattostr(s);
   ch:=true;
   n:='';
   end;
      if n='sum' then begin
   b:=strtofloat(edit.Text);
   s:=b+a;
   i:=false;
   cha:=false;
   edit.text:=floattostr(s);
   ch:=true;
   n:='';
   end;
      if n='mno' then begin
   b:=strtofloat(edit.Text);
   s:=b*a;
   i:=false;
   cha:=false;
   edit.text:=floattostr(s);
   ch:=true;
   n:='';
   end;
      if n='dil' then begin
   b:=strtofloat(edit.Text);
   s:=b/a;
   i:=false;
   cha:=false;
   edit.text:=floattostr(s);
   ch:=true;
   n:='';
   end;
end else
 if (ch=true)  then
   begin
   b:=strtofloat(edit.Text);
   end else
   if (cha=false) then
   begin
   a:=strtofloat(edit.Text);
   edit.clear;
   i:=false;
   cha:=true;
   end else begin
   b:=strtofloat(edit.Text);
   chb:=true;
   edit.clear;
   i:=false;
   dch:=false;
   end;

   if (chb=True)and(cha=true) then begin
   s:=a-b;
   edit.text:=floattostr(s);
   ch:=true;
   n:='min';
   a:=s;
   end;
end;



procedure TForm4.sumClick(Sender: TObject);
begin
 if (ch=true)  then
   begin
   b:=strtofloat(edit.Text);
   end else
   if (cha=false) then
   begin
   a:=strtofloat(edit.Text);
   edit.clear;
   i:=false;
   cha:=true;
   end else begin
   b:=strtofloat(edit.Text);
   chb:=true;
   edit.clear;
   i:=false;
   dch:=false;
   end;

   if (chb=True)and(cha=true) then begin
   s:=a+b;
   edit.text:=floattostr(s);
   ch:=true;
   n:='sum';
   a:=s;
   end;
  end;

end;

Re: delphi калькулятор) снова...

Добавлено: 14 фев 2008, 20:24
Dr_Grizzly
Не могу ща точно сообразить, завтра подумаю, но идея такая, что при нажатии на любую кнопку действия (+,-,/,*) нужен флаг который будет считываться при повторном нажатии на эту или любую другую кнопку действия.

В поле Edit ты вводишь цыфры с клавы? или у тебя на форме кнопки с цифрами?

Re: delphi калькулятор) снова...

Добавлено: 15 фев 2008, 12:04
Хыиуду
А можно названия флагов делать говорящими, или хотя бы снабжать комментариями? Я, например, не понял функции флагов i, ch и cha

Re: delphi калькулятор) снова...

Добавлено: 15 фев 2008, 17:09
the Gray Maybe
черт, уже сам отчаился... может форму выложить? cha - проверка есть ли а, i кажется для запятой (чтоб только раз вводилась, ch это если был выведен ответ.

Re: delphi калькулятор) снова...

Добавлено: 15 фев 2008, 17:11
the Gray Maybe
блин, понял суть фразы "коментами код не испортишь", как сделать чтоб меня все понимали?)

Re: delphi калькулятор) снова...

Добавлено: 16 фев 2008, 18:46
the Gray Maybe
ээ.. никто логику или код мне не напишет хотябы для плюса и минуса? (чтоб нормально считалось не только через равно но и другие знаки)