Underc0de - Hacking y seguridad informática

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: Visual Basic
  1. Private Sub Form_Load()
  2. Dim hola() As String
  3. hola = CharSplit7913("hola")
  4. ' Devuelve
  5. ' Hola(0) = "h"
  6. ' Hola(1) = "o"
  7. ' Hola(2) = "l"
  8. ' Hola(3) = "a"
  9. End Sub
  10.  
  11. Private Function CharSplit7913(expression As String) As String()
  12.     Dim X        As Long
  13.     Dim lExp     As Long
  14.     Dim ExpB()   As Byte
  15.     Dim AuxArr() As String
  16.  
  17.     ExpB = expression
  18.     lExp = UBound(ExpB)
  19.     ReDim AuxArr(lExp)
  20.  
  21.     For X = 0 To lExp Step 2
  22.         AuxArr(X / 2) = ChrW$(ExpB(X))
  23.     Next
  24.  
  25.     ReDim Preserve AuxArr(lExp \ 2)
  26.  
  27.     CharSplit7913 = AuxArr
  28.  
  29. 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!!!