Underc0de

Programación General => Visual Basic => Códigos Fuentes => Mensaje iniciado por: 79137913 en Febrero 04, 2013, 12:08:32 PM

Título: CharSplit7913 Separa un string en un array de caracteres.
Publicado por: 79137913 en Febrero 04, 2013, 12:08:32 PM
HOLA!!!

Bueno, mas que el titulo no puedo decir, abajo una explicacion.

Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim hola() As String
hola = CharSplit7913("hola")
' Devuelve
' Hola(0) = "h"
' Hola(1) = "o"
' Hola(2) = "l"
' Hola(3) = "a"
End Sub

Private Function CharSplit7913(expression As String) As String()
    Dim X        As Long
    Dim lExp     As Long
    Dim ExpB()   As Byte
    Dim AuxArr() As String

    ExpB = expression
    lExp = UBound(ExpB)
    ReDim AuxArr(lExp)

    For X = 0 To lExp Step 2
        AuxArr(X / 2) = ChrW$(ExpB(X))
    Next

    ReDim Preserve AuxArr(lExp \ 2)

    CharSplit7913 = AuxArr

End Function


Les paso a explicar como funciona esta funcion ya que tiene un poco de "magia negra" a la cual con este post los iniciare.

Empezamos declarando las variables, nada raro, salvo que uso tipo long en vez de integer... ¿Por que? porque el tipo long en VB6 es el tipo numerico mas rapido.
Luego, creo un array sin tamaño definido tipo byte (muy importante)
Y por ultimo un array string donde  se guardara el resultado que luego se plasmara en lo que devuelve la func.
Que es lo que hago aca
    ExpB = expression
Esto se llama "Evil Type Convert" nos aprovechamos de que el motor de VB puede hacer varias conversiones de tipos a una velocidad impresionante sin usar las funciones clasicas igualando ambos valores, en este caso convierto el string en un array de bytes.
Luego con esta instruccion
        AuxArr(X / 2) = ChrW$(ExpB(X))
Paso de un array de bytes a un array de texto los caracteres.

GRACIAS POR LEER!!!