hola amigos soy nuevo de paquete en este sitio XDXD
bueno soy un novato en esto de programación en delphi y espero que me ayuden.
para mi primer programa lo que intento hacer es una calculadora científica que pueda calcular múltiples ejercicios como por ejemplo.
10-2*5
por el momento ya programe lo que es una calculadora básica que +,-,*,/(y+x)
este es mi codigo.
Código Delphi
[-]
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm3 = class(TForm)
edt1: TEdit;
btn0: TButton;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
btn6: TButton;
btn7: TButton;
btn8: TButton;
btn9: TButton;
btncoma: TButton;
btn11: TButton;
btndivision: TButton;
btnmultiplicacion: TButton;
btnresta: TButton;
btnsuma: TButton;
btnc: TButton;
btnb: TButton;
edt2: TEdit;
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 btndivisionClick(Sender: TObject);
procedure btnmultiplicacionClick(Sender: TObject);
procedure btnrestaClick(Sender: TObject);
procedure btnsumaClick(Sender: TObject);
procedure btncomaClick(Sender: TObject);
procedure btncClick(Sender: TObject);
procedure edt1Change(Sender: TObject);
procedure btnbClick(Sender: TObject);
procedure btn11Click(Sender: TObject);
private
op:string;
sumaouble;
restaouble;
productoouble;
divisionouble;
num1ouble;
num2ouble;
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.btn0Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn0.Caption;
end;
procedure TForm3.btncClick(Sender: TObject);
begin
edt1.Text:='';
end;
procedure TForm3.btncomaClick(Sender: TObject);
begin
edt1.Text:=edt1.Text+btncoma.Caption;
end;
procedure TForm3.btndivisionClick(Sender: TObject);
begin
edt1.Text:=edt1.Text+'/';
op:='/';
end;
procedure TForm3.btnmultiplicacionClick(Sender: TObject);
begin
edt1.Text:=edt1.Text+'*';
op:='*';
end;
procedure TForm3.btnrestaClick(Sender: TObject);
begin
edt1.Text:=edt1.Text+'-';
op:='-';
end;
procedure TForm3.btnsumaClick(Sender: TObject);
begin
edt1.Text:=edt1.Text+'+';
op:='+';
end;
procedure TForm3.edt1Change(Sender: TObject);
var
s,t:string;
begin
if edt1.Text=',' then
begin
edt1.Text:='0'+','
end;
end;
procedure TForm3.btn11Click(Sender: TObject);
var
i,o,x:Integer;
a,b,c,d:string;
begin
x:=Length(edt1.Text);
a:=edt1.Text;
i:=0;
o:=0;
repeat
i:=i+1;
o:=o+1;
if a[i]='+' then
begin
d:=a[i];
i:=x;
o:=o+1
end
else
begin
if a[i]='-' then
begin
d:=a[i];
i:=x;
o:=o+1
end
else
begin
if a[i]='*' then
begin
d:=a[i];
i:=x;
o:=o+1
end
else
begin
if a[i]='/' then
begin
d:=a[i];
i:=x;
o:=o+1
end
else
begin
b:=b+a[i];
end;
end;
end;
end;
until i=x ;
for i := o to x do
begin
c:=c+a[i];
end;
if d='+' then
begin
try
edt1.Text:=floatToStr((StrTofloat(b))+(StrTofloat(c)))
except
ShowMessage('datos no validos');
end;
end
else
begin
if d='-' then
begin
try
edt1.Text:=floatToStr((StrTofloat(b))-(StrTofloat(c)))
except
ShowMessage('datos no validos');
end;
end
else
begin
if d='*' then
begin
try
edt1.Text:=floatToStr((StrTofloat(b))*(StrTofloat(c)))
except
ShowMessage('datos no validos');
end;
end
else
begin
if d='/' then
begin
try
edt1.Text:=floatToStr((StrTofloat(b))/(StrTofloat(c)))
except
ShowMessage('datos no validos');
end;
end
else
begin
ShowMessage('falta el operador:Ejemplo(x+y)');
end;
end;
end;
end;
end;
procedure TForm3.btn1Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn1.Caption;
end;
procedure TForm3.btn2Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn2.Caption;
end;
procedure TForm3.btn3Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn3.Caption;
end;
procedure TForm3.btn4Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn4.Caption;
end;
procedure TForm3.btn5Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn5.Caption;
end;
procedure TForm3.btn6Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn6.Caption;
end;
procedure TForm3.btn7Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn7.Caption;
end;
procedure TForm3.btn8Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn8.Caption;
end;
procedure TForm3.btn9Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn9.Caption;
end;
procedure TForm3.btnbClick(Sender: TObject);
var
x:Integer;
s:string;
begin
s:=edt1.Text;
x:=Length(s);
Delete(s,x,1);
edt1.Text:=s;
end;
end.
bueno espero que me den alguna ayuda o idea o consejo de como puedo hacer un algoritmo para que pueda programar una calculadora científica
gracias.