Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: agus0 en 30 Abril 2011, 22:29 PM

Título: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: agus0 en 30 Abril 2011, 22:29 PM
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!!
Título: Re: [Ayuda] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: BlackZeroX en 30 Abril 2011, 22:56 PM
.
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!¡.
.
Título: Re: [Ayuda] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: 79137913 en 30 Abril 2011, 23:33 PM
HOLA!!!

Mira este tema, ahí deje el codigo para hacerlo.
http://foro.elhacker.net/programacion_visual_basic/source_charsplit7913_separa_un_string_en_un_array_de_caracteres-t322111.0.html;msg1592263#msg1592263

GRACIAS POR LEER!!!
Título: Re: [Ayuda] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: Edu en 1 Mayo 2011, 00:18 AM
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
Título: Re: [Ayuda] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: seba123neo en 1 Mayo 2011, 01:06 AM
no necesitas ninguna matriz, con un simple For y Mid() esta listo...es pura logica.
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: agus0 en 1 Mayo 2011, 01:13 AM
Muchas Gracias por su ayuda. Lo Pude Solucionar Con el Source (http://foro.elhacker.net/programacion_visual_basic/source_charsplit7913_separa_un_string_en_un_array_de_caracteres-t322111.0.html;msg1592263#msg1592263) de 79137913 (http://foro.elhacker.net/profiles/79137913-u397857.html)
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: BlackZeroX en 1 Mayo 2011, 01:31 AM
.
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!¡.
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: Edu en 1 Mayo 2011, 02:06 AM
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
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: BlackZeroX en 1 Mayo 2011, 06:19 AM
@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!¡.
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: seba123neo en 1 Mayo 2011, 08:11 AM
en .NET lo haces en una linea con .ToCharArray.
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: BlackZeroX en 1 Mayo 2011, 11:00 AM
.
jaja sabia que hiba a pasar esto...

Cita de: seba123neo en  1 Mayo 2011, 08:11 AM
en .NET lo haces en una linea con .ToCharArray.

Cita de: BlackZeroX▓▓▒▒░░ en  1 Mayo 2011, 06:19 AM
@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!¡.

P.D.: Confundi/Mescle/Cague la clase Marshal.

Dulces Lunas!¡.
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: Edu en 1 Mayo 2011, 22:44 PM
Pero digo cambiando lo de mi codigo por Mid() como decia seba, en fin, no les puedo discutir a ustedes que son unos masters, saludos
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: raul338 en 3 Mayo 2011, 21:41 PM
No se si sea lo mas rapido. Pero lo mas simple y rapido (midiendo instrucciones) es usar stronv y poniendolo a un array de bytes y de ahi se recorre facilmente
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: 79137913 en 3 Mayo 2011, 22:03 PM
HOLA!!!

Osea... mi funcion que usa un EvilTypeConvert (o BadTypeConvert) y luego CHRW no es eficiente?

GRACIAS POR LEER!!!
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: raul338 en 3 Mayo 2011, 22:15 PM
La tuya usa nagia negra, la mia magia blanca :xD
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: Psyke1 en 3 Mayo 2011, 22:36 PM
Cita de: raul338 en  3 Mayo 2011, 21:41 PM
No se si sea lo mas rapido. Pero lo mas simple y rapido (midiendo instrucciones) es usar stronv y poniendolo a un array de bytes y de ahi se recorre facilmente
Más lento que la forma de BlackZer0x, pero más simple.

Cita de: raul338 en  3 Mayo 2011, 22:15 PM
La tuya usa nagia negra, la mia magia blanca :xD
Jajajajajaja :laugh:
¡Exacto! ;)

DoEvents! :P
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: 79137913 en 4 Mayo 2011, 02:29 AM
HOLA!!!

Jajaja, "Magia Negra" XD.

Siempre y cuando la "Magia Negra" no crashee esta bien :P.

Por cierto que es StronV?

GRACIAS POR LEER!!!
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: Psyke1 en 4 Mayo 2011, 13:18 PM
Cita de: 79137913 en  4 Mayo 2011, 02:29 AM
...
Por cierto que es StronV?

GRACIAS POR LEER!!!
Me da que raulito se refiere es a la función StrConv()... :xD :silbar:

Dejo un ejemplo (aunque repito que mi manera favorita es la de BlackZer0x :rolleyes: :-*) :
Código (vb) [Seleccionar]

Option Explicit

Private Static Function String2Array(ByRef strText$, ByRef strOutPut$()) As Boolean
Dim bytStr() As Byte
Dim Q&, lngLen&

   lngLen = (LenB(strText) \ 2) - 1
   
   If lngLen And &H80000000 Then Exit Function
   
   '// Aquí el famoso "StronV"... xP
   bytStr = Strings.StrConv(strText, vbFromUnicode)
   ReDim strOutPut$(0 To lngLen)
   
   For Q = 0 To lngLen
       strOutPut(Q) = Strings.ChrW$(bytStr(Q))
   Next Q
   
   String2Array = True
End Function

Private Sub Form_Load()
Dim varItem
Dim strO$()
   
   If String2Array("Psyke1", strO) Then
       For Each varItem In strO
           Debug.Print varItem
       Next varItem
   End If
End Sub


Retorna:
P
s
y
k
e
1


DoEvents! :P
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: BlackZeroX en 5 Mayo 2011, 02:45 AM
@Psyke1

Si lo que deseas es comparar negativos es con:

&H80000000

ya que las mascaras que se hacen con el operador binario son:

&HF0000000: 11110000
&H80000000: 10000000

P.D.: hay ya que tocar de nuevo la wiki no crees xP.

Temibles Lunas!¡.
Título: Re: [Solucionado] Separar una Cadena de Texto Caracter Por Caracter
Publicado por: Psyke1 en 5 Mayo 2011, 14:29 PM
Oops! :-\ gracias, se me escapó... :-[
corregido
Cita de: BlackZeroX▓▓▒▒░░ en  5 Mayo 2011, 02:45 AM
...
P.D.: hay ya que tocar de nuevo la wiki no crees xP.

Temibles Lunas!¡.
Si hermano, estuve bastante ocupado estos últimos meses por estudios, pero a partir de Junio podré meterme con ello de nuevo ;)

DoEvents! :P