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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2012, 13:13   #1
Ivanacats
Пользователь
 
Регистрация: 23.08.2012
Сообщений: 21
По умолчанию разработка простейшего калькулятора в Delphi

подскажите как сделать, чтобы на ноль разделить было нельзя с выходом сообщения об ошибке в label 4.
вот код программы:
Код:
var
  Form1: TForm1;
  d:Integer;
  a,b:Integer;
  c:Real;
  s:string;
  flag1,flag2:Boolean;
implementation

{$R *.dfm}
 procedure ravno (d:integer);
 begin
   a:=StrToInt(Form1.edt1.text);
     b:=StrToInt(Form1.edt2.text);
   case d of
   1: c:=a+b;
   2: c:=a*b;
   3: c:=a-b;
   4: c:=a/b;
   end;
   Form1.lbl4.caption:=floattostrf(c, ffgeneral,14,4);
 end;

procedure TForm1.OnKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in['0'..'9','+','-',#8]) then key:=#0;
end;

procedure TForm1.btn13Click(Sender: TObject);
begin
ravno(1);
end;

procedure TForm1.btn14Click(Sender: TObject);
begin
ravno(2);
end;

procedure TForm1.btn15Click(Sender: TObject);
begin
ravno(3);
end;

procedure TForm1.btn16Click(Sender: TObject);
begin
ravno(4);
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  if flag1=true then
  begin
s:=edt1.text;
s:=s+'0';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'0';
edt2.text:=s;
end;
end;

procedure TForm1.edt1Click(Sender: TObject);
begin
  flag2:=False;
flag1:=True;
end;

procedure TForm1.edt2Click(Sender: TObject);
begin
   flag1:=false;
flag2:=true;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'1';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'1';
edt2.text:=s;
end;
end;

procedure TForm1.btn3Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'2';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'2';
edt2.text:=s;
end;
end;

procedure TForm1.btn4Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'3';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'3';
edt2.text:=s;
end;
end;

procedure TForm1.btn5Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'4';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'4';
edt2.text:=s;
end;
end;

procedure TForm1.btn6Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'5';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'5';
edt2.text:=s;
end;
end;

procedure TForm1.btn7Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'6';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'6';
edt2.text:=s;
end;
end;

procedure TForm1.btn8Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'7';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'7';
edt2.text:=s;
end;
end;

procedure TForm1.btn9Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'8';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'8';
edt2.text:=s;
end;
end;

procedure TForm1.btn10Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+'9';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+'9';
edt2.text:=s;
end;
end;

procedure TForm1.btn12Click(Sender: TObject);
begin
 if flag1=true then
  begin
s:=edt1.text;
s:=s+',';
edt1.text:=s;
end else
if flag2=true then
  begin
s:=edt2.text;
s:=s+',';
edt2.text:=s;
end;
end;

procedure TForm1.btn11Click(Sender: TObject);
begin
edt1.Text:='';
edt2.Text:='';
lbl4.Caption:='';
end;

end.

Последний раз редактировалось Stilet; 01.12.2012 в 23:49.
Ivanacats вне форума Ответить с цитированием
Старый 01.12.2012, 13:17   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

как то так:
Код:
4: begin
    if b = 0 then Label4.Caption = 'Error!!!'
    else c:=a/b;
  end
maLoy*508 вне форума Ответить с цитированием
Старый 01.12.2012, 13:44   #3
Ivanacats
Пользователь
 
Регистрация: 23.08.2012
Сообщений: 21
По умолчанию

а это в Label писать? если да, то показывает ошибку перед еррор
Ivanacats вне форума Ответить с цитированием
Старый 01.12.2012, 13:52   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Цитата:
Сообщение от Ivanacats Посмотреть сообщение
а это в Label писать? если да, то показывает ошибку перед еррор
Код:
if b = 0 then Label4.Caption := 'Error!!!'
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 01.12.2012, 13:53   #5
Ivanacats
Пользователь
 
Регистрация: 23.08.2012
Сообщений: 21
По умолчанию

я ставила двоеточие if b:= '0' then Lbl4.Caption: = 'Error!!!'
else c:=a/b;
пишет [Error] Unit1.pas(305): Type of expression must be BOOLEAN

Последний раз редактировалось Ivanacats; 01.12.2012 в 13:58.
Ivanacats вне форума Ответить с цитированием
Старый 01.12.2012, 14:03   #6
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

напишите пожалуйста полный текст процедуры где вы это делаете. Подозреваю что у вас b объявлено не так. Или может вы не там двоеточие добавили) в условии и должно быть = , это важно.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 01.12.2012, 14:05   #7
Ivanacats
Пользователь
 
Регистрация: 23.08.2012
Сообщений: 21
По умолчанию

procedure TForm1.lbl4Click(Sender: TObject);

begin
if b:= '0' then Lbl4.Caption: = 'Error!!!'
else c:=a/b;

end;

end.
Ivanacats вне форума Ответить с цитированием
Старый 01.12.2012, 14:06   #8
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
if b = '0' then Lbl4.Caption:= 'Error!!!'
else c:=a/b;
Как и предполагал. Вот тут должно быть = , а не := .
:= в паскале это оператор присваивания, а = - это оператор сравнения( тип его результата истина или ложь).
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 01.12.2012 в 14:35.
kventin_zhuk вне форума Ответить с цитированием
Старый 01.12.2012, 14:15   #9
Ivanacats
Пользователь
 
Регистрация: 23.08.2012
Сообщений: 21
По умолчанию

вот что написала=(
[Error] Unit1.pas(304): Incompatible types
[Error] Unit1.pas(304): ':=' expected but ':' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Ivanacats вне форума Ответить с цитированием
Старый 01.12.2012, 14:20   #10
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Цитата:
Сообщение от Ivanacats Посмотреть сообщение
вот что написала=(
[Error] Unit1.pas(304): Incompatible types
[Error] Unit1.pas(304): ':=' expected but ':' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Код:
a,b:Integer;
c:Real;
Ааа, у вас b объявлена как integer, а b сравнивается с символом. Напишите:
Код:
if b = 0 then .......
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7, создание функционального калькулятора с использованием класса ulala Помощь студентам 16 27.03.2013 23:00
Описание 16-теричного калькулятора - Delphi Sinasta Помощь студентам 0 06.12.2011 07:18
Разработка простейшего антивируса C++ Чёрный ветер Помощь студентам 10 18.11.2011 21:25
Код Delphi для мульти-калькулятора Alex_Axel Общие вопросы Delphi 3 22.05.2010 21:22
Функции калькулятора. (Delphi) Delphi111 Помощь студентам 8 27.09.2009 14:59