Autor
|
Tema: Problema con mi código de calculadora (Leído 1,872 veces)
|
Chack22
Desconectado
Mensajes: 1
|
Hola a todos, se que hay varios posts con códigos de calculadoras pero yo intenté hacerla a mi manera y no sólo copiar las que ya están, y sólo pido algún consejo o que me digan que es lo que le falta o en que está mal, la calculadora la intente hacer en VB 6 con las 4 operaciones básicas (+,-,/,*). Pero a la hora de dar click en el botón de igual (=) no me devuelve el resultado de la operación. Aquí mi código. Private Sub Form_Load() Dim x As String Dim xlong As Long End Sub ---------------------------------------- Private Sub cmd0_Click(Index As Integer) display.Text = display.Text & "0" End Sub ---------------------------------------- Private Sub cmd1_Click(Index As Integer) display.Text = display.Text & "1" End Sub ---------------------------------------- Private Sub cmd2_Click(Index As Integer) display.Text = display.Text & "2" End Sub ---------------------------------------- Private Sub cmd3_Click(Index As Integer) display.Text = display.Text & "3" End Sub ---------------------------------------- Private Sub cmd4_Click(Index As Integer) display.Text = display.Text & "4" End Sub ---------------------------------------- Private Sub cmd5_Click(Index As Integer) display.Text = display.Text & "5" End Sub ---------------------------------------- Private Sub cmd6_Click(Index As Integer) display.Text = display.Text & "6" End Sub ---------------------------------------- Private Sub cmd7_Click(Index As Integer) display.Text = display.Text & "7" End Sub ---------------------------------------- Private Sub cmd8_Click(Index As Integer) display.Text = display.Text & "8" End Sub ---------------------------------------- Private Sub cmd9_Click(Index As Integer) display.Text = display.Text & "9" End Sub ---------------------------------------- Private Sub cmdentre_Click(Index As Integer) x = "/" xlong = "display.txt" display.Text = "" End Sub ---------------------------------------- Private Sub cmdmas_Click(Index As Integer) x = "+" xlong = "display.txt" display.Text = "" End Sub ---------------------------------------- Private Sub cmdmenos_Click(Index As Integer) x = "-" xlong = "display.txt" display.Text = "" End Sub ---------------------------------------- Private Sub cmdpor_Click(Index As Integer) x = "*" xlong = "display.txt" display.Text = "" End Sub ---------------------------------------- Private Sub cmdigual_Click() If x = "+" Then x = xlong + display.Text display.Text = "x" End If If x = "-" Then x = xlong - display.Text display.Text = "x" End If If x = "*" Then x = xlong * display.Text display.Text = "x" End If If x = "/" Then x = xlong / display.Text display.Text = "x" End If End Sub
|
|
|
En línea
|
|
|
|
XresH
|
Bueno hola, primero que nada quiero decirte que tenes mal declaradas las variables en Form Load, ya que si las dejas ahi solo son válidas dentro de ese evento.
Debes declararlas en la parte superior luego de Option Explicit (instruccion que te recomiendo que tengas siempre activa, ya que obliga a la declaración de variables)
Tienes muchos botones con Matriz de controles, habría que pulir un poco el código en ese sentido para tenerlo mas claro ya que hay código innecesario que perfectamente podés saltear sin que desacomode tu aplicación.
Podrías agregar una función que compruebe el divisor y si es igual a 0 salirte o desplegar un mensaje que es imposible dividr por cero.
Por el momento podés ir acomodando eso.
Saludos. EDITO: a ver que te parece esto, todo a base de matrices las cuales tienes creadas (al parecer) pero no las tienes aplicadas, observa;Option Explicit Dim Operacion As String Dim xlong As Long Dim Resultado As Long encima del todo en el IDE.
Luego, en el botón de Igual;'---------------------------------------- Private Sub cmdigual_Click() If Operacion = "+" Then Resultado = xlong + Val(display.Text) display.Text = Resultado End If If Operacion = "-" Then Resultado = xlong - Val(display.Text) display.Text = Resultado End If If Operacion = "*" Then Resultado = xlong * Val(display.Text) display.Text = Resultado End If If Operacion = "/" Then If CompruebaDiv(Val(display.Text)) = False Then MsgBox "No se puede dividir entre 0", vbOKOnly + vbCritical, "Atencion:Error" Exit Sub End If Resultado = xlong / Val(display.Text) display.Text = Resultado End If End Sub La división tiene una comprobación por el cual si el dividendo es 0 devuelve el mensaje y no permite continuar (sale de la función)
Como es una calculadora solo trabajas con números por lo que estás obligado a manipular la instrucción Val en todos los casos, porque según veo no usas Label sino TextBox.
Operación es una variable que se maneja a través de una matriz la cual contiene las cuatro operaciones que usas;Private Sub cmdOperacion_Click(Index As Integer) Select Case Index Case Is = 0 Operacion = "*" xlong = Val(display.Text) display.Text = "" Case Is = 1 Operacion = "-" xlong = Val(display.Text) display.Text = "" Case Is = 2 Operacion = "/" xlong = Val(display.Text) display.Text = "" Case Is = 3 Operacion = "+" xlong = Val(display.Text) display.Text = "" End Select End Sub "Limpia" el display para el nuevo número a insertar.
Para los botones basta con este code (con una matriz, claro está);Private Sub cmdN_Click(Index As Integer) display.Text = display.Text & Index End Sub Botones de 0 a 9.
Función que comprueba dividendo;Public Function CompruebaDiv(Valor As Integer) As Boolean If Valor = 0 Then CompruebaDiv = False Else CompruebaDiv = True End If End Function
Faltaría pulir algunos detalles como por ejemplo el de vaciar variables y display para realizar una nueva cuenta, pero con esto ya te alcanza de base para seguir.
También he notado que no trabajas bien con los tipos de datos, no puedes Asignarle a una variable tipo Long un texto porque lógicamente dará error.
Saludos
|
|
« Última modificación: 24 Mayo 2013, 05:57 am por XresH »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
codigo de dos botones de una calculadora
Programación Visual Basic
|
lipman
|
4
|
2,892
|
5 Noviembre 2006, 12:50 pm
por Jareth
|
|
|
[Código-PyQT4]Calculadora - JaAViEr
Scripting
|
0x5d
|
3
|
4,279
|
7 Julio 2011, 22:21 pm
por elhacker_carlos
|
|
|
[Código-PyQT4]Calculadora por secuencias - JaAViEr(0x5d)
Scripting
|
0x5d
|
2
|
3,056
|
27 Diciembre 2011, 02:19 am
por 0x5d
|
|
|
[Código-Python-Android]Calculadora por secuencia - JaAViEr(0x5d)
Scripting
|
0x5d
|
0
|
3,365
|
27 Diciembre 2011, 02:22 am
por 0x5d
|
|
|
Codigo fuente calculadora De codigos para Blackberry En delhpi 7
Programación General
|
realunlocker
|
2
|
3,278
|
17 Octubre 2012, 09:00 am
por washington8277
|
|