Hola buenas,
si tengo la opción "option strict = off"
me haria falta poner el "CInt" para pasar de string a integer?
ejemplo
i=CInt(val("10 * 25"))
o solo con poner
i= val("10*25" ) sería suficiente?
gracias.
Un saludo de vuestro amigo y vecino,
PETETE;)
Hola,
CInt(Val("10 * 25"))
Esto en concreto no te lo va a convertir en entero, ya que ningún numero contiene un '*'.
Sería así:
Dim i As Integer
Dim n1, n2 As Integer
n1 = Val("10")
n2 = Val("25")
i = CInt(n1 * n2)
Visual Basic nos hace muchas conversiones automaticamente, aunque esto no debería ser motivo para que nosotros no hagamos las conversiones correctamente, recuerda que en la mayoría de los lenguajes la vas a tener que hacer....
Para que te hagas una idea, con este codigo tendrías el mismo resultado:
Dim i As Integer
Dim n1, n2 As Integer
n1 = "10"
n2 = "25"
i = n1 * n2
MsgBox i
Incluso nos vuelve a convertir el numero en cadena para poder hacer el MsgBox... Se puede, SI, pero no es lo mas recomendable.
saludos.
Para empezar si pones:
i=CInt(val("10 * 25"))
suponiendo que i sea String, estás pasando Integer a String y no al revés.
Val devolvería el primer valor númerico de la cadena
Que yo sepa NO EXISTE 'Option Strict On/Off' en VB6, pero SÍ en VB.NET
Con Option Strict Off puedes pasar Integer a String sin preblemas.
Option Strict Off
Module Module1
Sub Main()
Dim Valor As String = Val("10 * 25")
Console.WriteLine(Valor)
Console.ReadLine()
End Sub
End Module
Si lo que quieres es resolver la ecuación, se me ocurre así
Dim Valor As String = "10 * 25"
Dim t() As String
t = Valor.Split({" "}, StringSplitOptions.RemoveEmptyEntries)
If Char.IsNumber(t(0)) And Char.IsNumber(t(2)) Then
Console.WriteLine(t(0) * t(2))
End If
Console.ReadLine()
Para otros operadores:
Dim Valor As String = "10 - 25"
Dim t() As String
t = Valor.Split({" "}, StringSplitOptions.RemoveEmptyEntries)
If Char.IsNumber(t(0)) And Char.IsNumber(t(2)) Then
Select Case t(1)
Case "*" : Console.WriteLine(t(0) * t(2))
Case "/" : Console.WriteLine(t(0) / t(2))
Case "+" : Console.WriteLine(CInt(t(0)) + CInt(t(2)))
Case "-" : Console.WriteLine(t(0) - t(2))
End Select
End If
Console.ReadLine()