Evaulate Maths Expression [Delphi XE8]

eljosco99

Active Member
Joined
Dec 28, 2014
Messages
51
Reaction score
10
Location
Benoni
Hey all. I have chosen IT as one of my subjects for my grade 10 year and have been using Delphi to learn. Recently I have decided to branch out a bit and create some things of my own. First was Tic Toe and now I am trying to make a calculator. I am an extreme beginner so just keep that in mind. my calculator works like this: when the user clicks on an operation both the value in the edit box and that operation get put in the small label above the edit box. When the user clicks '=' the computer must now evaluate the sum in the label and return the answer.
Could you show me how to do this?

The rest is not 100% complete , but it does function.
Code:
//J. Walker
unit Calculator_U;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Math;

type
  TForm1 = class(TForm)
    edtCalc: TEdit;
    lblSum: TLabel;
    btn7: TButton;
    btn8: TButton;
    btn9: TButton;
    btnPlus: TButton;
    btn4: TButton;
    btn5: TButton;
    btn2: TButton;
    btn1: TButton;
    btn6: TButton;
    btnPoint: TButton;
    btn3: TButton;
    btn0: TButton;
    btnMinus: TButton;
    btnMultiply: TButton;
    btnDivide: TButton;
    Button18: TButton;
    btnEqual: TButton;
    btnClear: TButton;
    procedure btn0Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
    procedure btn5Click(Sender: TObject);
    procedure btn6Click(Sender: TObject);
    procedure btn7Click(Sender: TObject);
    procedure btn8Click(Sender: TObject);
    procedure btn9Click(Sender: TObject);
    procedure btnPointClick(Sender: TObject);
    procedure btnMinusClick(Sender: TObject);
    procedure btnPlusClick(Sender: TObject);
    procedure btnMultiplyClick(Sender: TObject);
    procedure btnDivideClick(Sender: TObject);
    procedure btnClearClick(Sender: TObject);
    procedure btnEqualClick(Sender: TObject);

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

var
  Form1: TForm1;
  sedtCalc : string;
implementation

{$R *.dfm}
                                                                                //Digit Entry. 0-9 and .
procedure TForm1.btn0Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
      edtCalc.Text := edtCalc.Text + '0';
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '1'
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '2'
end;

procedure TForm1.btn3Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '3'
end;

procedure TForm1.btn4Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '4'
end;

procedure TForm1.btn5Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '5'
end;

procedure TForm1.btn6Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '6'
end;

procedure TForm1.btn7Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '7'
end;

procedure TForm1.btn8Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '8'
end;

procedure TForm1.btn9Click(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
    if length(sedtCalc) < 10 then
  edtCalc.Text := edtCalc.Text + '9'
end;

procedure TForm1.btnPointClick(Sender: TObject);
var
  ipointPos : Integer;
begin
  sedtCalc :=  edtCalc.Text;
  ipointPos := AnsiPos('.',sedtCalc);
    if (ipointPos = 0) and (length(sedtCalc) > 0) then
    edtCalc.Text := edtCalc.Text + '.';
end;



                                                                                //Mathematical Functions
procedure TForm1.btnMinusClick(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
  if length(sedtCalc) > 0 then
  begin
  edtCalc.Text := '';
  lblSum.Caption := lblSum.Caption + sedtCalc + '-';
  end;
end;

procedure TForm1.btnMultiplyClick(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
  if length(sedtCalc) > 0 then
  begin
  edtCalc.Text := '';
  lblSum.Caption := lblSum.Caption + sedtCalc + '*';
  end;
end;

procedure TForm1.btnPlusClick(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
  if length(sedtCalc) > 0 then
  begin
  edtCalc.Text := '';
  lblSum.Caption := lblSum.Caption + sedtCalc + '+';
  end;
end;

procedure TForm1.btnDivideClick(Sender: TObject);
begin
  sedtCalc :=  edtCalc.Text;
  if length(sedtCalc) > 0 then
  begin
  edtCalc.Text := '';
  lblSum.Caption := lblSum.Caption + sedtCalc + '/';
  end;
end;

                                                                                //Clear.
procedure TForm1.btnClearClick(Sender: TObject);
begin
lblSum.Caption := '';
edtCalc.Text := '';
end;

procedure TForm1.btnEqualClick(Sender: TObject);
begin
//Calculation
end;

end.

So yeah thanks in advance:D
 
Top
Sign up to the MyBroadband newsletter
X