Embarcadero

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

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

Desconectado edwinmoq

  • Registrado
  • *
  • Panel de agradecimientos
  • -Tu has dado: 0
  • -Tu has recibido: 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:

Código DELPHI
  1. unit UntMain;
  2.  
  3. interface
  4.  
  5. uses
  6.   XPMan, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, ExtCtrls;
  8.  
  9. type
  10.   TFrmCalculadora = class(TForm)
  11.     BtnEqual: TButton;
  12.     BtnSuma: TButton;
  13.     BtnResta: TButton;
  14.     BtnMult: TButton;
  15.     BtnDiv: TButton;
  16.     BtnPi: TButton;
  17.     BtnSin: TButton;
  18.     BtnCos: TButton;
  19.     BtnTan: TButton;
  20.     BtnAC: TButton;
  21.     BtnSqrt: TButton;
  22.     BtnPow2: TButton;
  23.     BtnPow3: TButton;
  24.     BtnP: TButton;
  25.     Btn0: TButton;
  26.     EdtDisplay: TEdit;
  27.     Btn1: TButton;
  28.     Btn2: TButton;
  29.     Btn3: TButton;
  30.     Btn4: TButton;
  31.     Btn5: TButton;
  32.     Btn6: TButton;
  33.     Btn7: TButton;
  34.     Btn8: TButton;
  35.     Btn9: TButton;
  36.     LblTitle: TLabel;
  37.     Label1: TLabel;
  38.     procedure Numero(Num: string);
  39.     procedure Calculo();
  40.     procedure Operaciones();
  41.     procedure Btn1Click(Sender: TObject);
  42.     procedure Btn2Click(Sender: TObject);
  43.     procedure Btn3Click(Sender: TObject);
  44.     procedure Btn4Click(Sender: TObject);
  45.     procedure Btn5Click(Sender: TObject);
  46.     procedure Btn6Click(Sender: TObject);
  47.     procedure Btn7Click(Sender: TObject);
  48.     procedure Btn8Click(Sender: TObject);
  49.     procedure Btn9Click(Sender: TObject);
  50.     procedure BtnSqrtClick(Sender: TObject);
  51.     procedure BtnPiClick(Sender: TObject);
  52.     procedure BtnSinClick(Sender: TObject);
  53.     procedure BtnTanClick(Sender: TObject);
  54.     procedure BtnCosClick(Sender: TObject);
  55.     procedure BtnACClick(Sender: TObject);
  56.     procedure FormCreate(Sender: TObject);
  57.     procedure BtnPow2Click(Sender: TObject);
  58.     procedure BtnPow3Click(Sender: TObject);
  59.     procedure BtnPClick(Sender: TObject);
  60.     procedure BtnSumaClick(Sender: TObject);
  61.     procedure BtnEqualClick(Sender: TObject);
  62.     procedure BtnMultClick(Sender: TObject);
  63.     procedure BtnRestaClick(Sender: TObject);
  64.     procedure BtnDivClick(Sender: TObject);
  65.     procedure Btn0Click(Sender: TObject);
  66.   private
  67.     { Private declarations }
  68.   public
  69.     { Public declarations }
  70.   end;
  71. const
  72.  pi: real = 3.1415926535897932384626433832795;
  73. var
  74.   Resp: Real;
  75.   FrmCalculadora: TFrmCalculadora;
  76. implementation
  77.  
  78. {$R *.dfm}
  79.  
  80. procedure TFrmCalculadora.Numero(Num: string);
  81. begin
  82.  if EdtDisplay.Tag <> 0 then
  83.     EdtDisplay.Text := EdtDisplay.Text + Num
  84.   else
  85.     EdtDisplay.Text := Num;
  86.   EdtDisplay.Tag := 1;
  87. end;
  88.  
  89. procedure TFrmCalculadora.Calculo();
  90. begin
  91.   EdtDisplay.Tag := 0;
  92.   BtnP.Tag := 0;
  93.   BtnSuma.Tag := 1;
  94.   BtnResta.Tag := 1;
  95.   BtnMult.Tag := 1;
  96.   BtnDiv.Tag := 1;
  97. end;
  98.  
  99. Procedure TFrmCalculadora.Operaciones();
  100. var Error: integer;
  101. begin
  102. Error := 0;
  103. if BtnSuma.Tag = 2 then
  104.   if BtnSuma.Tag = 2 then
  105. <<<<<<< HEAD
  106.     if BtnSuma.Tag = 2 then
  107.         Resp  := Resp + strtofloat(EdtDisplay.Text);
  108. =======
  109.     if BtnSuma.Tag = 2 then
  110.       if BtnSuma.Tag = 2 then
  111.         if BtnSuma.Tag = 2 then
  112.           if BtnSuma.Tag = 2 then
  113.             Resp  := Resp + strtofloat(EdtDisplay.Text);
  114. >>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f
  115. if BtnResta.Tag = 2 then
  116.   Resp  := Resp - strtofloat(EdtDisplay.Text);
  117. if BtnMult.Tag = 2 then
  118.   Resp  := Resp * strtofloat(EdtDisplay.Text);
  119. if BtnDiv.Tag = 2 then
  120.   If strtofloat(EdtDisplay.Text) <> 0 then
  121.     Resp := Resp  / StrToFloat(EdtDisplay.Text)
  122.   else
  123.     Error := 1;
  124. if Error = 0 then
  125.   EdtDisplay.Text := FloatToStr(Resp)
  126. else
  127.   EdtDisplay.Text := 'Error: División por Cero'
  128. end;
  129.  
  130. procedure TFrmCalculadora.Btn1Click(Sender: TObject);
  131. begin
  132. Numero('1');
  133. end;
  134.  
  135. procedure TFrmCalculadora.Btn2Click(Sender: TObject);
  136. begin
  137. Numero('2');
  138. end;
  139.  
  140. procedure TFrmCalculadora.Btn3Click(Sender: TObject);
  141. begin
  142. Numero('3');
  143. end;
  144.  
  145. procedure TFrmCalculadora.Btn4Click(Sender: TObject);
  146. begin
  147. Numero('4');
  148. end;
  149.  
  150. procedure TFrmCalculadora.Btn5Click(Sender: TObject);
  151. begin
  152. Numero('5');
  153. end;
  154.  
  155. procedure TFrmCalculadora.Btn6Click(Sender: TObject);
  156. begin
  157. Numero('6');
  158. end;
  159.  
  160. procedure TFrmCalculadora.Btn7Click(Sender: TObject);
  161. begin
  162. Numero('7');
  163. end;
  164.  
  165. procedure TFrmCalculadora.Btn8Click(Sender: TObject);
  166. begin
  167. Numero('8');
  168. end;
  169.  
  170. procedure TFrmCalculadora.Btn9Click(Sender: TObject);
  171. begin
  172. Numero('9');
  173. end;
  174.  
  175. procedure TFrmCalculadora.BtnSqrtClick(Sender: TObject);
  176. var
  177. error: Integer;
  178. aux: real;
  179. begin
  180.  Val(EdtDisplay.text,aux,error);
  181. if error = 0 then
  182.   EdtDisplay.Text := floattostr(sqrt(aux))
  183. else
  184.   EdtDisplay.Text := 'Error de cálculo';
  185. EdtDisplay.Tag := 0;
  186. end;
  187.  
  188. procedure TFrmCalculadora.BtnPiClick(Sender: TObject);
  189. begin
  190. EdtDisplay.Text := floattostr(pi);
  191. EdtDisplay.Tag := 0;
  192. end;
  193.  
  194. procedure TFrmCalculadora.BtnSinClick(Sender: TObject);
  195. var
  196. error: Integer;
  197. aux : Real;
  198. begin
  199.  Val(EdtDisplay.text,aux,error);
  200. if error = 0 then
  201.   begin
  202.     aux := aux * pi/180;
  203.    EdtDisplay.Text := floattostr(sin(aux));
  204.   end
  205. else
  206.   EdtDisplay.Text := 'Error de cálculo';
  207. EdtDisplay.Tag := 0;
  208. end;
  209.  
  210. procedure TFrmCalculadora.BtnTanClick(Sender: TObject);
  211. var
  212. error: Integer;
  213. aux : Real;
  214. begin
  215.  Val(EdtDisplay.text,aux,error);
  216. if error = 0 then
  217.   begin
  218.     aux := aux * pi/180;
  219.    EdtDisplay.Text := floattostr(Sin(aux)/Cos(aux));
  220.   end
  221. else
  222.   EdtDisplay.Text := 'Error de cálculo';
  223. EdtDisplay.Tag := 0;
  224. end;
  225.  
  226. procedure TFrmCalculadora.BtnCosClick(Sender: TObject);
  227. var
  228. error: Integer;
  229. aux : Real;
  230. begin
  231.  Val(EdtDisplay.text,aux,error);
  232. if error = 0 then
  233.   begin
  234.     aux := aux * pi/180;
  235.    EdtDisplay.Text := floattostr(Cos(aux));
  236.   end
  237. else
  238.   EdtDisplay.Text := 'Error de cálculo';
  239. EdtDisplay.Tag := 0;
  240. end;
  241.  
  242. procedure TFrmCalculadora.BtnACClick(Sender: TObject);
  243. begin
  244. EdtDisplay.Text := '0';
  245. EdtDisplay.Tag := 0;
  246. BtnP.Tag := 0;
  247. Resp := 0;
  248. end;
  249.  
  250. procedure TFrmCalculadora.FormCreate(Sender: TObject);
  251. begin
  252. EdtDisplay.Text := '0';
  253. EdtDisplay.Tag := 0;
  254. end;
  255.  
  256. procedure TFrmCalculadora.BtnPow2Click(Sender: TObject);
  257. var
  258. error: Integer;
  259. aux: real;
  260. begin
  261.  Val(EdtDisplay.text,aux,error);
  262. if error = 0 then
  263.   EdtDisplay.Text := floattostr(sqr(aux))
  264. else
  265.   EdtDisplay.Text := 'Error de cálculo';
  266. EdtDisplay.Tag := 0;
  267. end;
  268.  
  269. procedure TFrmCalculadora.BtnPow3Click(Sender: TObject);
  270. var
  271. error: Integer;
  272. aux: real;
  273. begin
  274.  Val(EdtDisplay.text,aux,error);
  275. if error = 0 then
  276.   EdtDisplay.Text := floattostr(sqr(aux)* aux)
  277. else
  278.   EdtDisplay.Text := 'Error de cálculo';
  279. EdtDisplay.Tag := 0;
  280. end;
  281. procedure TFrmCalculadora.BtnPClick(Sender: TObject);
  282. begin
  283. if BtnP.Tag = 0 then
  284.   if EdtDisplay.Tag = 0 then
  285.     Numero('0,')
  286.   else
  287.     Numero(',');
  288. BtnP.Tag := 1;
  289. end;
  290.  
  291. procedure TFrmCalculadora.BtnSumaClick(Sender: TObject);
  292. begin
  293. if BtnSuma.Tag = 0 Then
  294.   Resp  := strtofloat(EdtDisplay.Text)
  295. else
  296.   Operaciones();
  297. Calculo();
  298. BtnSuma.Tag := 2;
  299. end;
  300.  
  301. procedure TFrmCalculadora.BtnEqualClick(Sender: TObject);
  302. begin
  303.   Operaciones();
  304.   EdtDisplay.Tag := 0;
  305.   BtnP.Tag := 0;
  306.   BtnSuma.Tag := 0;
  307.   BtnResta.Tag := 0;
  308.   BtnMult.Tag := 0;
  309.   BtnDiv.Tag := 0;
  310. end;
  311.  
  312. procedure TFrmCalculadora.BtnMultClick(Sender: TObject);
  313. begin
  314. if BtnMult.Tag = 0 Then
  315.   Resp  := strtofloat(EdtDisplay.Text)
  316. else
  317.   Operaciones();
  318. Calculo();
  319. BtnMult.Tag := 2;
  320. end;
  321.  
  322. procedure TFrmCalculadora.BtnRestaClick(Sender: TObject);
  323. begin
  324. if BtnResta.Tag = 0 Then
  325.   Resp  := strtofloat(EdtDisplay.Text)
  326. else
  327.   Operaciones();
  328. Calculo();
  329. BtnResta.Tag := 2;
  330. end;
  331.  
  332. procedure TFrmCalculadora.BtnDivClick(Sender: TObject);
  333. begin
  334. if BtnDiv.Tag = 0 Then
  335.   Resp  := strtofloat(EdtDisplay.Text)
  336. else
  337.   Operaciones();
  338. Calculo();
  339. BtnDiv.Tag := 2;
  340. end;
  341.  
  342. procedure TFrmCalculadora.Btn0Click(Sender: TObject);
  343. begin
  344. if EdtDisplay.Tag  = 1 then
  345.   Numero('0')
  346. else
  347.   EdtDisplay.Text := '0';
  348. end;
  349. end.

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 »

Comunidad Delphiaccess

[Ayuda] Creando calculadora en delphi.
« : 12 de mayo de 2013, 20:38:01 »

Desconectado egostar

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 1182
  • -Tu has recibido: 641
  • Mensajes: 10,323
  • Calificaciones: +715/-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?

Código DELPHI
  1. <<<<<<< HEAD
  2.     if BtnSuma.Tag = 2 then
  3.         Resp  := Resp + strtofloat(EdtDisplay.Text);    
  4. =======
  5.     if BtnSuma.Tag = 2 then
  6.       if BtnSuma.Tag = 2 then
  7.         if BtnSuma.Tag = 2 then
  8.           if BtnSuma.Tag = 2 then
  9.             Resp  := Resp + strtofloat(EdtDisplay.Text);
  10. >>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f
  11.  

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
  • *
  • Panel de agradecimientos
  • -Tu has dado: 0
  • -Tu has recibido: 0
  • Mensajes: 5
  • Calificaciones: +0/-0
  • Sexo: Masculino
Ésta parte de código no es correcta, lo copiaste o lo escribiste?

Código DELPHI
  1. <<<<<<< HEAD
  2.     if BtnSuma.Tag = 2 then
  3.         Resp  := Resp + strtofloat(EdtDisplay.Text);    
  4. =======
  5.     if BtnSuma.Tag = 2 then
  6.       if BtnSuma.Tag = 2 then
  7.         if BtnSuma.Tag = 2 then
  8.           if BtnSuma.Tag = 2 then
  9.             Resp  := Resp + strtofloat(EdtDisplay.Text);
  10. >>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f
  11.  

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

Conectado escafandra

  • Moderadores
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 105
  • -Tu has recibido: 732
  • Mensajes: 2,673
  • Calificaciones: +810/-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.

Desconectado poliburro

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 123
  • -Tu has recibido: 374
  • Mensajes: 3,752
  • Calificaciones: +432/-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
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 354
  • -Tu has recibido: 303
  • Mensajes: 5,672
  • Calificaciones: +365/-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:

Código DELPHI
  1. if BtnSuma.Tag = 2 then
  2.   if BtnSuma.Tag = 2 then
  3. <<<<<<< HEAD
  4.     if BtnSuma.Tag = 2 then
  5.         Resp  := Resp + strtofloat(EdtDisplay.Text);
  6. =======
  7.     if BtnSuma.Tag = 2 then
  8.       if BtnSuma.Tag = 2 then
  9.         if BtnSuma.Tag = 2 then
  10.           if BtnSuma.Tag = 2 then
  11.             Resp  := Resp + strtofloat(EdtDisplay.Text);
  12. >>>>>>> 871d4b9aa6c92b13e4e8a006f335c24930a9a46f

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

Saludos.

Desconectado Caral

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 223
  • -Tu has recibido: 319
  • Mensajes: 3,535
  • Calificaciones: +367/-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