Buenos días a todos, soy nuevo en el Club,mi nombre es Juan Marcelo, soy estudiante y vivo en Salta Argentina, como actividad nos dieron que hagamos una calculadora.
Estoy teniendo un problema con el cambio de signo +-, e probado con algunos códigos y no logro hacer que funcione correctamente.
En el código que esta más abajo, la calculadora coloca el signo menos y lo saca; pero al realizar una operación por ejemplo:
12+(-6) me arroja como resultado 0. No se cual es el error. Si alguien me puede ayudar a resolver este problema.
Desde ya muchas gracias.
Código de la calculadora:
Código Delphi
[-]unit UCalculadora;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
lblvisor: TLabel;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
btn6: TButton;
btn7: TButton;
btn8: TButton;
btn9: TButton;
btn0: TButton;
btn11: TButton;
btn12: TButton;
btn13: TButton;
btn14: TButton;
btn15: TButton;
btn10: TButton;
btn16: TButton;
btn17: TButton;
btn18: TButton;
btn19: TButton;
btn21: TButton;
btn22: TButton;
procedure btn0Click(Sender: TObject);
procedure btn15Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure btn10Click(Sender: TObject);
procedure btn11Click(Sender: TObject);
procedure btn12Click(Sender: TObject);
procedure btn13Click(Sender: TObject);
procedure btn14Click(Sender: TObject);
procedure btn16Click(Sender: TObject);
procedure btn17Click(Sender: TObject);
procedure btn18Click(Sender: TObject);
procedure btn19Click(Sender: TObject);
procedure btn21Click(Sender: TObject);
procedure btn22Click(Sender: TObject);
private
op1,op2,op3:Extended;
op:Integer;
estadovisor:Boolean;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn0Click(Sender: TObject);
begin
if (Sender is TButton) and (lblvisor.Caption='0') then
lblvisor.Caption:=(sender as TButton).Caption
else if not estadovisor then
lblvisor.Caption:=lblvisor.Caption+ (sender as TButton).Caption
else
begin
lblvisor.Caption:=(Sender as TButton).Caption;
estadovisor:=False;
end;
end;
procedure TForm1.btn10Click(Sender: TObject);
begin
op2:=StrToFloat(lblvisor.Caption);
case op of
0:lblvisor.Caption:= FloatToStr(op1+op2);
1:lblvisor.Caption:= FloatToStr(op1-op2);
2:lblvisor.Caption:= FloatToStr(op1*op2);
3: if op2<>0 then lblvisor.Caption:= FloatToStr(op1/op2);
4: lblvisor.Caption:= FloatToStr(Sqr(op1));
5: lblvisor.Caption:= FloatToStr(1/op1);
6: lblvisor.Caption:= FloatToStr((op1*op2)/100);
7: lblvisor.Caption:= FloatToStr(Sqrt(op1));
end;
end;
procedure TForm1.btn11Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
op:=0 ;
estadovisor:=True;
end;
procedure TForm1.btn12Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
op:=1;
estadovisor:=True;
end;
procedure TForm1.btn13Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
op:=2;
estadovisor:=True;
end;
procedure TForm1.btn14Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
op:=3;
estadovisor:=True;
end;
procedure TForm1.btn15Click(Sender: TObject);
begin
if Pos (',', lblvisor.Caption)=0 then
lblvisor.Caption:=lblvisor.Caption+',';
end;
procedure TForm1.btn16Click(Sender: TObject);
begin
lblvisor.Caption:='0';
op1:=0;
op2:=0;
op:=-1;
end;
procedure TForm1.btn17Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
op:=4;
estadovisor:=True
end;
procedure TForm1.btn18Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
op:=5;
estadovisor:=True
end;
procedure TForm1.btn19Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
op:=6;
estadovisor:=True
end;
procedure TForm1.btn21Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
op:=7;
estadovisor:=True
end;
procedure TForm1.btn22Click(Sender: TObject);
begin
op1:=StrToFloat(lblvisor.Caption);
if op1<> 0 then
lblvisor.Caption:= FloatToStr(op1*(-1));
estadovisor:=True
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
estadovisor:=False;
end;
end.