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: _LooSeR_ en 31 Marzo 2008, 17:27 PM

Título: Duda con cadenas
Publicado por: _LooSeR_ en 31 Marzo 2008, 17:27 PM
Hola, explico brevemente el problema. Dentro de un código que manejo con cadenas de carácteres. Busqué como poder indexar los carácteres de una cadena, ya que en otros lenguajes se podía y encontré que era mediante la función Chars

La cosa es que quiero poder añadirle a una cadena un carácter, y nose si me da fallo al mezclar el tipo string con el tipo char, o porque :S

El caso es que al hacer esta sentencia:

ControlDecimal = ControlDecimal & chain.Chars(i)

Siendo ControlDecimal y chain dos strings.

Quiero añadirle a la cadena ControlDecimal el carácter "i" de la cadena chain.

Me salta un error señalándome "chain" como calificador no válido.

Que debo hacer?? Muchas gracias ;)
Título: Re: Duda con cadenas
Publicado por: ~~ en 31 Marzo 2008, 17:42 PM
Pero tu estas usando VB6 o VB net? por q eso es VB net...

En vb net kedaria asi (aunke para vb net ya esta el subfoo de net  :P )
Código (vbnet) [Seleccionar]
Public Partial Class MainForm
Public Sub New()
Me.InitializeComponent()

Dim ControlDecimal As String, chain As String
chain = "Hola"
ControlDecimal = ControlDecimal & chain.Chars (3)
MessageBox.Show (ControlDecimal)
End Sub
End Class


Y te mostrará la "a" lógicamente, si lo kieres hacer en VB6, tendras q usar alguna función tipo mid, si no te sale te ayudo, pero define si kieres vb6 o net xDD

Salu2 E0N
Título: Re: Duda con cadenas
Publicado por: _LooSeR_ en 31 Marzo 2008, 17:55 PM
Ah ok, ya decia yo :P Gracias por la aclaración. Esque busque por internet mil formas, y la que encontré fue esa. Y como tu dices ahora que me doy cuenta ponia que era en .net

Imagino que sera vb6, es un código dentro de access, y me señala vb6.3

Entonces para poder ver los caracteres con la funcion mid(a,b,c) (creo que es asi por lo que he mirado)
Siendo a la cadena, b el caracter donde comienzas a extraer la subcadena, y c los carácteres a coger a partir de b no?

Es un bucle donde trabaja esa sentencia, con lo cual para seleccionar un carácter tendria que poner:
Código (vb) [Seleccionar]
ControlDecimal = ControlDecimal & Mid(chain, i, i)

Eso sería correcto? Si no? Porque le añadimos una cadena a otra cadena, aunque en este caso sea una substring de 1 carácter.

Muchas gracias por la aclaración E0N ;)
Título: Re: Duda con cadenas
Publicado por: ~~ en 31 Marzo 2008, 18:02 PM
Weno, si lo q kieres es extraer letra a letra en el ultimo parametro pon un 1 no i ;)

Saludos
Título: Re: Duda con cadenas
Publicado por: _LooSeR_ en 31 Marzo 2008, 18:02 PM
Ouch xD jaja Un pequeño gran despiste :P

Gracias!!
Título: Re: Duda con cadenas
Publicado por: cobein en 31 Marzo 2008, 18:15 PM
Como curiosidad aca les dejo otra forma de hacerlo, la unica diferencia es que funciona en base 0

Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Load()
    Debug.Print Split(StrConv("Test", vbUnicode), vbNullChar)(1)
End Sub



Edit:

Tambien ya que estamos si quieren convertir una cadena de caracteres a una matriz es una buena forma, no se la velocidad comparado al tipico for con el mid pero el code es mucho mas simple.

Código (vb) [Seleccionar]
Private Sub Form_Load()
    Dim svData() As String
    svData = Split(StrConv("Test", vbUnicode), vbNullChar)
   
    Dim i As Long
    For i = 0 To UBound(svData) - 1
       Debug.Print "Character " & i & " = " & svData(i); ""
    Next
End Sub

Título: Re: Duda con cadenas
Publicado por: ~~ en 31 Marzo 2008, 18:21 PM
Claro, a diferencia del ascii q escrbe toda la palabra seguida unicode deja las letras normales y corrientes con un 0 entre medias (con cero me refiero a \0 o NULL, ya nos entendemos ;))

Así "Hola" en ascii se kedaria igual, pero al pasarlo a unicode nos kedaria "H \0 \0 o \0 l \0 a \0"
(solo por acalrar conceptos  :P)