STRING---INTEGER

Iniciado por PETTETE, 29 Marzo 2017, 12:02 PM

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

PETTETE

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;)
UN SALUDO DE VUESTRO AMIGO Y VECINO,
PETETE;)

fary

#1
Hola,

Código (vb) [Seleccionar]
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í:

Código (vb) [Seleccionar]
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:

Código (vb) [Seleccionar]
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.
Un byte a la izquierda.

okik

#2
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.
Código (vbnet) [Seleccionar]

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í

Código (vbnet) [Seleccionar]

       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:

Código (vbnet) [Seleccionar]
 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()