[Solucionado] Separar una Cadena de Texto Caracter Por Caracter

Iniciado por agus0, 30 Abril 2011, 22:29 PM

0 Miembros y 2 Visitantes están viendo este tema.

agus0

Estaba Buscando la forma de separar una Cadena de la siguiente manera:

CitarNombre = "agus0"

Y que Quede en una matriz así...
Citar
LetraNombre(0) = "a"
LetraNombre(1) = "g"
LetraNombre(2) = "u"
LetraNombre(3) = "s"
LetraNombre(4) = "0"

Se Entiende?

Mi Idea es Hacer un Bucle y con Left ir armando la Matriz. Ustedes que opinan? Cual es la Mejor Manera?

Muchas Gracias!!

BlackZeroX

#1
.
Mr. Frogs realizo un codigo excelente donde jugaba con el tipo de una variable y la convirtio de manera inteligente jugando con los punteros.

Dulces Lunas!¡.
.
The Dark Shadow is my passion.

79137913

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Edu

En vb6 se puede recorrer letra por letra poniendo string ?
Si es asi es facil, sino tambien porq usas el left.

Código (vb) [Seleccionar]

for i = 0 to string.lenth
array[i] = string[i]
next

seba123neo

no necesitas ninguna matriz, con un simple For y Mid() esta listo...es pura logica.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

agus0


BlackZeroX

#6
.
no se me ocurre nada mas rapido que esto:

Código (vb) [Seleccionar]


Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
Private Declare Function VarPtrA Lib "msvbvm60.dll" Alias "VarPtr" (ByRef Ptr() As Any) As Long
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long

Private Sub Form_Load()
Dim i           As Integer
Dim sVar        As String
Dim aStr()      As Integer
Dim iDims       As Long

    sVar = "Miguel Angel"
    iDims = charSplitToIntArray(StrPtr(sVar), aStr())
    For i = 0 To (iDims - 1)
        Debug.Print Chr(aStr(i))
    Next i
End Sub

Private Function charSplitToIntArray(ByVal PtrString As Long, ByRef aPtr() As Integer) As Long
Dim lLen      As Long
    lLen = lstrlenW(ByVal PtrString)
    ReDim aPtr(0 To (lLen - 1))
    CopyMemory ByVal VarPtr(aPtr(0)), ByVal PtrString, (lLen * 2)
    charSplitToIntArray = lLen - 1
End Function



De esta menara obtienes algo asi como punteos en CPP solo es similar nada identico pero es practico y dinamico

Código (vb) [Seleccionar]


Private Sub Form_Load()
Dim i           As Integer
Dim sVar        As String
Dim aStr()      As Integer
Dim iDims       As Long

    sVar = "Miguel Angel"
    iDims = charSplitToIntArray(StrPtr(sVar)+(7*2), aStr()) '// Retorno Angel...
    For i = 0 To (iDims - 1)
        Debug.Print Chr(aStr(i))
    Next i
End Sub



Temibles Lunas!¡.
The Dark Shadow is my passion.

Edu

Eh? Porque tanto problema? mi codigo no ira para vb6 pero se arregla como dice seba con Mid() y es mucho mas corto q hacer todo eso :S

BlackZeroX

@XXX-ZERO-XXX

la sintaxis de ese código es de .NET... ademas en .NET me parece que con Marshal se puede aun mas facil usando el ToChar que tiene la clase String si no mal recuerdo ( hace mucho que no toco .NET ).

Dulces Lunas!¡.
The Dark Shadow is my passion.

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson