Presuntamente algunas funciones de Microsoft.VisualBasic no son compatibles con las aplicaciones para Windows Store

 

Pues eso… que en un proyecto DLL (biblioteca de clases) para Windows Store no me ha reconocido ciertas funciones de manipulación de cadenas que están definidas en el módulo Strings del espacio de nombres Microsoft.VisualBasic (que es como si dijéramos el "runtime" de Visual Basic para .NET).

Lo de presuntamente es por si he hecho algo mal y por eso no me reconocía algunas funciones… al menos en un proyecto del tipo biblioteca de clases (class library), en la figura 1 tienes las cosas que se pueden usar de ese módulo con las funciones de cadena.

 

Microsoft.VisualBasic.Strings en app store class library
Figura 1. Las funciones que muestra Strings en un proyecto del tipo Class library para Windows store

 

Nota:
En una aplicación para Windows Store (no una librería de clases) también muestra los mismos métodos. En una aplicación/librería para el escritorio (incluso de Windows 8) muestra las que estamos habituados a usar.

 

Así que… me las he tenido que fabricar, al menos las que me han hecho falta para este caso concreto, que no es otro que una actualización de mi librería (perdón, biblioteca) para colorear código: gsColorearCodigo.

Aquí te dejo un módulo de Visual Basic para hacer las conversiones… lo mismo ya tenía algo publicado sobre algo parecido, pero…

 

'------------------------------------------------------------------------------
' VBStrings                                                         (01/Ene/13)
'
' Para simular las funciones de cadena de Visual Basic
' ya que parece que el runtime para Windows Store no incluye algunas funciones
'
' ©Guillermo 'guille' Som, 2013
'------------------------------------------------------------------------------
Option Strict On
Option Infer On


Public Module VBStrings
    ''' <summary>
    ''' Devuelve la posición (en base 1) de cadena1 en cadena2
    ''' </summary>
    ''' <remarks></remarks>
    Public Function InStr(cadena1 As String, cadena2 As String) As Integer
        Try
            Dim i = cadena1.IndexOf(cadena2)
            Return i + 1
        Catch ex As Exception
            Return 0
        End Try
    End Function


    ''' <summary>
    ''' Devuelve la posición en base 1 de cadena1 en cadena2
    ''' se comprueba a partir de la posición desde
    ''' </summary>
    ''' <remarks></remarks>
    Public Function InStr(desde As Integer, cadena1 As String, cadena2 As String) As Integer
        Try
            Dim i = cadena1.IndexOf(cadena2, desde - 1)
            Return i + 1
        Catch ex As Exception
            Return 0
        End Try
    End Function

    ''' <summary>
    ''' Devuelve una cadena con los cuantos primeros caracteres de cadena1
    ''' El primer caracter es el 1 y se devuelve en base 1
    ''' </summary>
    ''' <remarks></remarks>
    Public Function Left(cadena1 As String, cuantos As Integer) As String
        If String.IsNullOrWhiteSpace(cadena1) OrElse cuantos < 1 Then
            Return ""
        End If

        Dim s = cadena1.Substring(0, cuantos - 1)
        Return s
    End Function

    ''' <summary>
    ''' Devuelve la cantidad de caracteres que tiene cadena1
    ''' </summary>
    ''' <remarks></remarks>
    Public Function Len(cadena1 As String) As Integer
        If String.IsNullOrWhiteSpace(cadena1) Then
            Return 0
        End If

        Return cadena1.Length
    End Function

    ''' <summary>
    ''' Devuelve una cadena nueva después de quitarle
    ''' los espacios del principio y del final
    ''' </summary>
    ''' <remarks></remarks>
    Public Function Trim(cadena1 As String) As String
        If String.IsNullOrWhiteSpace(cadena1) Then
            Return ""
        End If

        Return cadena1.Trim()
    End Function

    ''' <summary>
    ''' Devuelve una cadena a partir de la posición desde
    ''' La pirmera posición es la 1
    ''' </summary>
    ''' <remarks></remarks>
    Public Function Mid(cadena1 As String, desde As Integer) As String
        If String.IsNullOrWhiteSpace(cadena1) OrElse desde < 1 Then
            Return ""
        End If

        Return cadena1.Substring(desde - 1)
    End Function

    ''' <summary>
    ''' Devuelve una cadena con cuantos caracteres de cadena1 
    '''  a partir de desde
    ''' La primera posición es la 1
    ''' </summary>
    ''' <remarks></remarks>
    Public Function Mid(cadena1 As String, desde As Integer, 
                                            cuantos As Integer) As String
        If String.IsNullOrWhiteSpace(cadena1) OrElse desde < 1 Then
            Return ""
        End If

        Return cadena1.Substring(desde - 1, cuantos)
    End Function

    ''' <summary>
    ''' Trocea una cadena usando los caracteres indicados
    ''' </summary>
    ''' <remarks></remarks>
    Public Function Split(cadena1 As String, caracteres As String) As String()
        Return cadena1.Split(caracteres.ToCharArray, 
                              StringSplitOptions.RemoveEmptyEntries)
    End Function
End Module


 

Espero que te sea de utilidad.

 

Nos vemos.

Guillermo

2 comentarios en “Presuntamente algunas funciones de Microsoft.VisualBasic no son compatibles con las aplicaciones para Windows Store

  1. Cristyan

    Un saludo Guille desde Venezuela. Contarte que algo parecido me paso, pero esta vez fue cuando quise migrar un código de VB a C#. Eso lo hice a mano que sino…:). En fin que tuve que apañarmelas y fabricar algunas funciones equivalentes yo mismo. Otras las busqué en tu sitio que hay algo publicado bien completo por cierto. Casi siempre uso esas funciones en detrimento de las nativas de VB. Cosas de uno supongo. Un abrazo… Cristyan Valera. Guanare, Ven.

    Responder

Responder a Cristyan Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *