Sumar números con variable Object

Tengo este algoritmo que me ejecuta las cuatro operaciones básicas, pero tengo un problema con el MsgBox, lo tengo por si se dejan los campos vacíos te salte un mensaje que diga que debes ingresar un numero, y cuando lo ejecuto y le doy en el botón aceptar sin poner nada me salta error, porque la variante no puede ser entero y si es variante object a la hora de sumar por ejemplo 3+3 me aparece 33 y no 6.

Que podria hacer en este caso

Es urgente! Se los agradecería mucho

Public Class Form1
Private Sub boton1_Click(sender As Object, e As EventArgs) Handles boton1.Click
Dim operacion, Resultado As Integer
Dim num1, num2 As Object

operacion = combo.SelectedIndex
num1 = txt1.Text
num2 = txt2.Text

If txt1.Text = ("") Or txt2.Text = ("") Then
MsgBox("Debe Ingresar al menos un numero ")

End If

If operacion = 0 Then
Resultado = num1 + num2
lista1.Items.Add("↓↓↓El Resultado de la Suma es↓↓↓")
lista1.Items.Add(Resultado)
ElseIf operacion = 1 Then
Resultado = num1 - num2
lista1.Items.Add("↓↓↓El Resultado de la Resta es↓↓↓")
lista1.Items.Add(Resultado)
ElseIf operacion = 2 Then
Resultado = num1 * num2
lista1.Items.Add("↓↓↓El Resultado de la Multiplicacion es↓↓↓")
lista1.Items.Add(Resultado)
ElseIf operacion = 3 Then
Resultado = num1 / num2
lista1.Items.Add("↓↓↓El Resultado de la Multiplicacion es↓↓↓")
lista1.Items.Add(Resultado)
End If
End Sub

1 Respuesta

Respuesta

Estas sumando strings, deberías primero convertir tus valores a enteros, tal como: (int) object, o Int. Parse(string).

Disculpa mi ignorancia, pero soy muy principiante en este mundo

No se si me dices que el problema es en la línea de código donde defino los valores:

Dim num1, num2 as integer 

O a que parte te refieres

Y muchas gracias por tomarte el tiempo en responder, lo aprecio mucho!

Claro, estas definiendo esas variables como object (num1, num2 as Object) y al asignarle el valor del txt1 o txt2 se convierten en String, lo cual si sumas dos string te dan esos valores, ("2"+"2"="22").

Por eso o los defines como "as Integer" o lo conviertes a tal. Asi puedes trabajar con enteros solamente.

pasa que cuando los defino y le doy aceptar para que aparezca el MsgBox con el mensaje se detiene el programa y me tira ese error

Es (int) (txt1.Text) o Int.Parse(txt1.Text)

Me corrijo, utiliza

Convert. ToInt32(txtPrice.Text)

La suma se corrigió!

Pero el problema del MssgBox persiste

Porque estas tratando de convertir el valor empty ("") a un entero, debes comprobar los valores de entrada antes de hacer la conversion, por ejemplo que no sean valores vacios, o caracteres incorrectos.

pero se supone que el mssgbox es para que me lea el campo vacío y me salte el mensaje

siendo así no se podrá hacer ?

Y gracias por responder nuevamente y perdón por las molestias.

anexo:

el mssgbox si me aparece,  pero cuando doy aceptar en el mssgbox me salta el error.

Exacto, pero mira tu código, ¿qué se ejecuta primero? La verificación de los datos, ¿o la conversión de tales? Ahi esta tu error ;)

Y si se cumple que son válidos no debes continuar con el código, haz un return 0 i null, o usa un if(condición) para eso ;)

Puedes poner

If(tu función del msgbox)

else{todo tu codigo restante}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas