Foro de elhacker.net

Programación => 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:

Citar
Nombre = "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
  1. for i = 0 to string.lenth
  2. array[i] = string[i]
  3. next
  4.  


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
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
  5. Private Declare Function VarPtrA Lib "msvbvm60.dll" Alias "VarPtr" (ByRef Ptr() As Any) As Long
  6. Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
  7.  
  8. Private Sub Form_Load()
  9. Dim i           As Integer
  10. Dim sVar        As String
  11. Dim aStr()      As Integer
  12. Dim iDims       As Long
  13.  
  14.    sVar = "Miguel Angel"
  15.    iDims = charSplitToIntArray(StrPtr(sVar), aStr())
  16.    For i = 0 To (iDims - 1)
  17.        Debug.Print Chr(aStr(i))
  18.    Next i
  19. End Sub
  20.  
  21. Private Function charSplitToIntArray(ByVal PtrString As Long, ByRef aPtr() As Integer) As Long
  22. Dim lLen      As Long
  23.    lLen = lstrlenW(ByVal PtrString)
  24.    ReDim aPtr(0 To (lLen - 1))
  25.    CopyMemory ByVal VarPtr(aPtr(0)), ByVal PtrString, (lLen * 2)
  26.    charSplitToIntArray = lLen - 1
  27. End Function
  28.  
  29.  

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

Código
  1.  
  2. Private Sub Form_Load()
  3. Dim i           As Integer
  4. Dim sVar        As String
  5. Dim aStr()      As Integer
  6. Dim iDims       As Long
  7.  
  8.    sVar = "Miguel Angel"
  9.    iDims = charSplitToIntArray(StrPtr(sVar)+(7*2), aStr()) '// Retorno Angel...
  10.    For i = 0 To (iDims - 1)
  11.        Debug.Print Chr(aStr(i))
  12.    Next i
  13. End Sub
  14.  
  15.  

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...

en .NET lo haces en una linea con .ToCharArray.

@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
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.

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
...
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
  1. Option Explicit
  2.  
  3. Private Static Function String2Array(ByRef strText$, ByRef strOutPut$()) As Boolean
  4. Dim bytStr() As Byte
  5. Dim Q&, lngLen&
  6.  
  7.    lngLen = (LenB(strText) \ 2) - 1
  8.  
  9.    If lngLen And &H80000000 Then Exit Function
  10.  
  11.    '// Aquí el famoso "StronV"... xP
  12.    bytStr = Strings.StrConv(strText, vbFromUnicode)
  13.    ReDim strOutPut$(0 To lngLen)
  14.  
  15.    For Q = 0 To lngLen
  16.        strOutPut(Q) = Strings.ChrW$(bytStr(Q))
  17.    Next Q
  18.  
  19.    String2Array = True
  20. End Function
  21.  
  22. Private Sub Form_Load()
  23. Dim varItem
  24. Dim strO$()
  25.  
  26.    If String2Array("Psyke1", strO) Then
  27.        For Each varItem In strO
  28.            Debug.Print varItem
  29.        Next varItem
  30.    End If
  31. End Sub

Retorna:
Código:
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
...
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