Duda con cadenas

Iniciado por _LooSeR_, 31 Marzo 2008, 17:27 PM

0 Miembros y 1 Visitante están viendo este tema.

_LooSeR_

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 ;)

~~

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

_LooSeR_

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 ;)

~~

Weno, si lo q kieres es extraer letra a letra en el ultimo parametro pon un 1 no i ;)

Saludos

_LooSeR_

Ouch xD jaja Un pequeño gran despiste :P

Gracias!!

cobein

#5
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

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

~~

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)