delphi калькулятор) снова...
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 12
- Зарегистрирован: 05 фев 2008, 20:35
такой вопрос - не могу придумать ка сделать чтоб считалось знаком равно и действием (6+5 начимаем + он пишет 11, вводим допустим 8 и = он пишет 19). короч как в виндовсовском... уже через такую задницу делал... но стабильности добится не удалось) если можете обясните логику на примере двух или одного действия, допустим + или + и -.
Просто запоминать последний знак действия. А вообще виндовский калькулятор на 6+5=8= выдаст 16. Угадайте, почему.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 12
- Зарегистрирован: 05 фев 2008, 20:35
знач все нормально, у меня тоже так))
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Что-то я не пойму суть вопроса, или тема уже закрыта???
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

-
- Сообщения: 12
- Зарегистрирован: 05 фев 2008, 20:35
суть вопроса: код чтоб калькулятор нормально считал не только при нажатии = но и других знаков. в моем коде поидее должен работать плюс равно и минус. для наглядности ехе файл (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;
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Не могу ща точно сообразить, завтра подумаю, но идея такая, что при нажатии на любую кнопку действия (+,-,/,*) нужен флаг который будет считываться при повторном нажатии на эту или любую другую кнопку действия.
В поле Edit ты вводишь цыфры с клавы? или у тебя на форме кнопки с цифрами?
В поле Edit ты вводишь цыфры с клавы? или у тебя на форме кнопки с цифрами?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

А можно названия флагов делать говорящими, или хотя бы снабжать комментариями? Я, например, не понял функции флагов i, ch и cha
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 12
- Зарегистрирован: 05 фев 2008, 20:35
черт, уже сам отчаился... может форму выложить? cha - проверка есть ли а, i кажется для запятой (чтоб только раз вводилась, ch это если был выведен ответ.
-
- Сообщения: 12
- Зарегистрирован: 05 фев 2008, 20:35
блин, понял суть фразы "коментами код не испортишь", как сделать чтоб меня все понимали?)
-
- Сообщения: 12
- Зарегистрирован: 05 фев 2008, 20:35
ээ.. никто логику или код мне не напишет хотябы для плюса и минуса? (чтоб нормально считалось не только через равно но и другие знаки)