Калькулятор

Статус
Закрыто для дальнейших ответов.
03.10.2011
8
0
#1
Привет всем!
Мною была написана программка калькулятор в среде Делфи, но она не отчётливо работает. Прошу помощи по диагностике проблемы и возможные пути её решения. Спасибо!


Код:
unit Calculator;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button3: TButton;
Button1: TButton;
Button2: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button4: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;


procedure process_sum();
procedure display_answer();
procedure correct_display();
procedure apply_number(text:string);
procedure Button13Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button10Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
process_action:string='';
calculated_value:double=0;
showing_answer:boolean=false;
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }
procedure TForm1.apply_number(text:string);
begin
correct_display;
edit1.Text:=edit1.Text + text
end;


procedure TForm1.correct_display;
begin
if showing_answer = true then
begin
showing_answer:=false;
edit1.text:='';
end;
if edit1.Text= '0' then
begin
edit1.Text:='';
end;
end;

procedure TForm1.display_answer;
begin
showing_answer:=true;
edit1.Text:=floattostr(calculated_value);
end;

procedure TForm1.process_sum;
begin
if process_action = '' then
begin
calculated_value:=strtofloat(edit1.text);
if process_action = '+' then
end;
calculated_value:=calculated_value+strtofloat(edit1.text);
end;

if process_action = '' then
begin
calculated_value:=strtofloat(edit1.text);
if process_action = '-' then
end;

begin
calculated_value:=calculated_value-strtofloat(edit1.text);
if process_action = '' then



end;
calculated_value:=strtofloat(edit1.text);
begin
if process_action = '*' then
end;

begin
calculated_value:=calculated_value*strtofloat(edit1.text);
if process_action = '' then
end;

begin
calculated_value:=strtofloat(edit1.text);
if process_action = '/' then
end;

begin
calculated_value:=calculated_value/strtofloat(edit1.text);
end;

end;

procedure TForm1.Button13Click(Sender: TObject);
begin
apply_number('0')
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
apply_number('1')
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
apply_number('2')
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
apply_number('3')
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
apply_number('4')
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
apply_number('5')
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
apply_number('6')
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
apply_number('7')
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
apply_number('8')
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
apply_number('9')
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
process_sum();
process_action:='+';
display_answer();
end;

end.
 
03.10.2011
8
0
#3
А какие именно? У меня просто что-то Делфи не показывает ошибки да и сама программка запускаться не хочет. Сможешь помочь?
 
09.11.2009
665
1
#4
к примеру в процедуре form1.procces_sum есть много непонятних if`ов :
if process_action = '-' then
end;
 
09.11.2009
665
1
#5
в procedure TForm1.process_sum уберите лишний end
Код:
procedure TForm1.process_sum;
begin
if process_action = '' then
begin
calculated_value:=strtofloat(edit1.text);
if process_action = '+' then
end;
calculated_value:=calculated_value+strtofloat(edit1.text);
{end;}

if process_action = '' then
begin
calculated_value:=strtofloat(edit1.text);
if process_action = '-' then
end;

begin
calculated_value:=calculated_value-strtofloat(edit1.text);
if process_action = '' then



end;
calculated_value:=strtofloat(edit1.text);
begin
 
Статус
Закрыто для дальнейших ответов.