Embarcadero

Autor Tema: [Ayuda] Creando calculadora en delphi.  (Leído 786 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado edwinmoq

  • Registrado
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 5
  • Calificaciones: +0/-0
  • Sexo: Masculino
[Ayuda] Creando calculadora en delphi.
« Topic Start: 12 de mayo de 2013, 20:38:01 »
Hola a todos, la verdad es que soy nuevo en este foro y necesito ayuda, es que en la escuela la profesora nos puso a hacer una calculadora en delphi, y yo con mucho trabajo y buscando informacion en internet logre crearla, pero tiene dos  errores que no tengo ni idea de como resolverlos, he buscado en internet y no encuentro nada que me ayude, y pense que aqui algun experto me podria ayudar.

tengo estos dos errores:



este es el formulario:



este es el codigo:

[delphi]unit UntMain;

interface

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

type
  TFrmCalculadora = class(TForm)
    BtnEqual: TButton;
    BtnSuma: TButton;
    BtnResta: TButton;
    BtnMult: TButton;
    BtnDiv: TButton;
    BtnPi: TButton;
    BtnSin: TButton;
    BtnCos: TButton;
    BtnTan: TButton;
    BtnAC: TButton;
    BtnSqrt: TButton;
    BtnPow2: TButton;
    BtnPow3: TButton;
    BtnP: TButton;
    Btn0: TButton;
    EdtDisplay: TEdit;
    Btn1: TButton;
    Btn2: TButton;
    Btn3: TButton;
    Btn4: TButton;
    Btn5: TButton;
    Btn6: TButton;
    Btn7: TButton;
    Btn8: TButton;
    Btn9: TButton;
    LblTitle: TLabel;
    Label1: TLabel;
    procedure Numero(Num: string);
    procedure Calculo();
    procedure Operaciones();
    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 BtnSqrtClick(Sender: TObject);
    procedure BtnPiClick(Sender: TObject);
    procedure BtnSinClick(Sender: TObject);
    procedure BtnTanClick(Sender: TObject);
    procedure BtnCosClick(Sender: TObject);
    procedure BtnACClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtnPow2Click(Sender: TObject);
    procedure BtnPow3Click(Sender: TObject);
    procedure BtnPClick(Sender: TObject);
    procedure BtnSumaClick(Sender: TObject);
    procedure BtnEqualClick(Sender: TObject);
    procedure BtnMultClick(Sender: TObject);
    procedure BtnRestaClick(Sender: TObject);
    procedure BtnDivClick(Sender: TObject);
    procedure Btn0Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
 pi: real = 3.1415926535897932384626433832795;
var
  Resp: Real;
  FrmCalculadora: TFrmCalculadora;
implementation

{$R *.dfm}

procedure TFrmCalculadora.Numero(Num: string);
begin
 if EdtDisplay.Tag <> 0 then
    EdtDisplay.Text := EdtDisplay.Text + Num
  else
    EdtDisplay.Text := Num;
  EdtDisplay.Tag := 1;
end;

procedure TFrmCalculadora.Calculo();
begin
  EdtDisplay.Tag := 0;
  BtnP.Tag := 0;
  BtnSuma.Tag := 1;
  BtnResta.Tag := 1;
  BtnMult.Tag := 1;
  BtnDiv.Tag := 1;
end;

Procedure TFrmCalculadora.Operaciones();
var Error: integer;
begin
Error := 0;
if BtnSuma.Tag = 2 then
  if BtnSuma.Tag = 2 then
<<<<<<< HEAD
    if BtnSuma.Tag = 2 then
        Resp  := Resp + strtofloat(EdtDisplay.Text);
=======
    if BtnSuma.Tag = 2 then
      if BtnSuma.Tag = 2 then
        if BtnSuma.Tag = 2 then
          if BtnSuma.Tag = 2 then
            Resp  := Resp + strtofloat(EdtDisplay.Text);
>>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f
if BtnResta.Tag = 2 then
  Resp  := Resp - strtofloat(EdtDisplay.Text);
if BtnMult.Tag = 2 then
  Resp  := Resp * strtofloat(EdtDisplay.Text);
if BtnDiv.Tag = 2 then
  If strtofloat(EdtDisplay.Text) <> 0 then
    Resp := Resp  / StrToFloat(EdtDisplay.Text)
  else
    Error := 1;
if Error = 0 then
  EdtDisplay.Text := FloatToStr(Resp)
else
  EdtDisplay.Text := 'Error: División por Cero'
end;

procedure TFrmCalculadora.Btn1Click(Sender: TObject);
begin
Numero('1');
end;

procedure TFrmCalculadora.Btn2Click(Sender: TObject);
begin
Numero('2');
end;

procedure TFrmCalculadora.Btn3Click(Sender: TObject);
begin
Numero('3');
end;

procedure TFrmCalculadora.Btn4Click(Sender: TObject);
begin
Numero('4');
end;

procedure TFrmCalculadora.Btn5Click(Sender: TObject);
begin
Numero('5');
end;

procedure TFrmCalculadora.Btn6Click(Sender: TObject);
begin
Numero('6');
end;

procedure TFrmCalculadora.Btn7Click(Sender: TObject);
begin
Numero('7');
end;

procedure TFrmCalculadora.Btn8Click(Sender: TObject);
begin
Numero('8');
end;

procedure TFrmCalculadora.Btn9Click(Sender: TObject);
begin
Numero('9');
end;

procedure TFrmCalculadora.BtnSqrtClick(Sender: TObject);
var
error: Integer;
aux: real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  EdtDisplay.Text := floattostr(sqrt(aux))
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnPiClick(Sender: TObject);
begin
EdtDisplay.Text := floattostr(pi);
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnSinClick(Sender: TObject);
var
error: Integer;
aux : Real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  begin
    aux := aux * pi/180;
   EdtDisplay.Text := floattostr(sin(aux));
  end
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnTanClick(Sender: TObject);
var
error: Integer;
aux : Real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  begin
    aux := aux * pi/180;
   EdtDisplay.Text := floattostr(Sin(aux)/Cos(aux));
  end
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnCosClick(Sender: TObject);
var
error: Integer;
aux : Real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  begin
    aux := aux * pi/180;
   EdtDisplay.Text := floattostr(Cos(aux));
  end
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnACClick(Sender: TObject);
begin
EdtDisplay.Text := '0';
EdtDisplay.Tag := 0;
BtnP.Tag := 0;
Resp := 0;
end;

procedure TFrmCalculadora.FormCreate(Sender: TObject);
begin
EdtDisplay.Text := '0';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnPow2Click(Sender: TObject);
var
error: Integer;
aux: real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  EdtDisplay.Text := floattostr(sqr(aux))
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnPow3Click(Sender: TObject);
var
error: Integer;
aux: real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  EdtDisplay.Text := floattostr(sqr(aux)* aux)
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;
procedure TFrmCalculadora.BtnPClick(Sender: TObject);
begin
if BtnP.Tag = 0 then
  if EdtDisplay.Tag = 0 then
    Numero('0,')
  else
    Numero(',');
BtnP.Tag := 1;
end;

procedure TFrmCalculadora.BtnSumaClick(Sender: TObject);
begin
if BtnSuma.Tag = 0 Then
  Resp  := strtofloat(EdtDisplay.Text)
else
  Operaciones();
Calculo();
BtnSuma.Tag := 2;
end;

procedure TFrmCalculadora.BtnEqualClick(Sender: TObject);
begin
  Operaciones();
  EdtDisplay.Tag := 0;
  BtnP.Tag := 0;
  BtnSuma.Tag := 0;
  BtnResta.Tag := 0;
  BtnMult.Tag := 0;
  BtnDiv.Tag := 0;
end;

procedure TFrmCalculadora.BtnMultClick(Sender: TObject);
begin
if BtnMult.Tag = 0 Then
  Resp  := strtofloat(EdtDisplay.Text)
else
  Operaciones();
Calculo();
BtnMult.Tag := 2;
end;

procedure TFrmCalculadora.BtnRestaClick(Sender: TObject);
begin
if BtnResta.Tag = 0 Then
  Resp  := strtofloat(EdtDisplay.Text)
else
  Operaciones();
Calculo();
BtnResta.Tag := 2;
end;

procedure TFrmCalculadora.BtnDivClick(Sender: TObject);
begin
if BtnDiv.Tag = 0 Then
  Resp  := strtofloat(EdtDisplay.Text)
else
  Operaciones();
Calculo();
BtnDiv.Tag := 2;
end;

procedure TFrmCalculadora.Btn0Click(Sender: TObject);
begin
if EdtDisplay.Tag  = 1 then
  Numero('0')
else
  EdtDisplay.Text := '0';
end;
end.[/delphi]

Y aqui es justamente donde estan los dos errores 8o|:



si alguien puede ayudarme se lo agradeceria de corazon. AYUDAA!




« Última Modificación: 13 de mayo de 2013, 15:53:31 por enecumene »

Desconectado egostar

  • Administrador
  • ******
  • Thank You
  • -Given: 1220
  • -Receive: 650
  • Mensajes: 10,062
  • Calificaciones: +709/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
Re: [Ayuda] Creando calculadora en delphi.
« Respuesta #1: 12 de mayo de 2013, 20:47:40 »
Ésta parte de código no es correcta, lo copiaste o lo escribiste?

[delphi]
<<<<<<< HEAD
    if BtnSuma.Tag = 2 then
        Resp  := Resp + strtofloat(EdtDisplay.Text);   
=======
    if BtnSuma.Tag = 2 then
      if BtnSuma.Tag = 2 then
        if BtnSuma.Tag = 2 then
          if BtnSuma.Tag = 2 then
            Resp  := Resp + strtofloat(EdtDisplay.Text);
>>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f
[/delphi]

Si lo copiaste hubo un error al copiarlo/pegarlo.

Si lo escribiste, que es lo que se supone que es HEAD ?

En todo caso, borra estas tres lineas y nos comentas.

<<<<<<< HEAD
=======
>>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f


Saludos

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."
- Benjamin Franklin
"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."- Anónimo


          

Desconectado edwinmoq

  • Registrado
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 5
  • Calificaciones: +0/-0
  • Sexo: Masculino
Ésta parte de código no es correcta, lo copiaste o lo escribiste?

[delphi]
<<<<<<< HEAD
    if BtnSuma.Tag = 2 then
        Resp  := Resp + strtofloat(EdtDisplay.Text);   
=======
    if BtnSuma.Tag = 2 then
      if BtnSuma.Tag = 2 then
        if BtnSuma.Tag = 2 then
          if BtnSuma.Tag = 2 then
            Resp  := Resp + strtofloat(EdtDisplay.Text);
>>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f
[/delphi]

Si lo copiaste hubo un error al copiarlo/pegarlo.

Si lo escribiste, que es lo que se supone que es HEAD ?

En todo caso, borra estas tres lineas y nos comentas.

<<<<<<< HEAD
=======
>>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f


Saludos

Hice lo que dijiste, y la aplicacion corre pero no funciona bien, la mayoria de las operaciones salen mal, la suma, resta, etc. Al parecer alguna de las lineas que me dijiste que borre es importante. :@

No se que hacer.

Saludos

Desconectado escafandra

  • Moderadores
  • ******
  • Thank You
  • -Given: 104
  • -Receive: 750
  • Mensajes: 2,567
  • Calificaciones: +792/-0
  • Sexo: Masculino
Re: [Ayuda] Creando calculadora en delphi.
« Respuesta #3: 13 de mayo de 2013, 02:41:41 »
Las lineas que has borrado no son código delphi. Si no funciona revisa el código de cada operación. Los trabajos no son para copiar y pegas sino para aprender. Si no te esfuerzas no aprendes nada. No esperes que aquí te realicen tus tareas escolares.


Un saludo.

Conectado poliburro

  • Administrador
  • ******
  • Thank You
  • -Given: 123
  • -Receive: 388
  • Mensajes: 3,589
  • Calificaciones: +413/-0
  • Sexo: Masculino

Hice lo que dijiste, y la aplicacion corre pero no funciona bien, la mayoria de las operaciones salen mal, la suma, resta, etc. Al parecer alguna de las lineas que me dijiste que borre es importante. :@

No se que hacer.

Saludos

Dudo que esas líneas fueran imortantes para la ejecución del programa pues no cumplen con la sintaxis establecida para Object Pascal.  Ya que el problema está en que las operaciones salen  mal, seguramente el algoritmo de cálculo está incorrecto. Si gustas podemos ir una por una corrigiéndolas. Así que comencemos con suma:

Cuál es el algoritmo que hace la operación suma? podrías mostrarlo y darnos dos datos que usaste para probarla y el resultdo que te arrojó tu sistema?



Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Desconectado enecumene

  • Administrador
  • ******
  • Thank You
  • -Given: 349
  • -Receive: 294
  • Mensajes: 5,596
  • Calificaciones: +354/-1
  • Sexo: Masculino
  • DA Webmaster
Re: [Ayuda] Creando calculadora en delphi.
« Respuesta #5: 13 de mayo de 2013, 15:58:05 »
Pues este pedazo es el problema:

[delphi]if BtnSuma.Tag = 2 then
  if BtnSuma.Tag = 2 then
<<<<<<< HEAD
    if BtnSuma.Tag = 2 then
        Resp  := Resp + strtofloat(EdtDisplay.Text);
=======
    if BtnSuma.Tag = 2 then
      if BtnSuma.Tag = 2 then
        if BtnSuma.Tag = 2 then
          if BtnSuma.Tag = 2 then
            Resp  := Resp + strtofloat(EdtDisplay.Text);
>>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f[/delphi]

Elimina las lineas que te indicaron más arriba y elimina los "if BtnSuma.Tag = 2 then" repetidos, luego prueba.

Saludos.

Desconectado Caral

  • Administrador
  • ******
  • Thank You
  • -Given: 225
  • -Receive: 321
  • Mensajes: 3,507
  • Calificaciones: +364/-4
  • Sexo: Masculino
  • Siempre Novato
Re: [Ayuda] Creando calculadora en delphi.
« Respuesta #6: 13 de mayo de 2013, 19:32:33 »
Hola
Aqui un ejemplo sencillo.
Saludos