Pregunta

Considere lo siguiente:

char [] chararray = txt1.Text;

¿Cómo hacemos lo mismo en Visual Basic 6.0?

¿Fue útil?

Solución

Eso depende de lo que quiere hacer con el tiempo.

Se puede, por ejemplo, hacer esto en Visual Basic 6:

Dim b() As Byte
b = Text1.Text

De esta forma la matriz b será redimensionada para contener los datos Unicode de "string" - pero luego cada personaje será dividida en dos bytes que probablemente no es lo que quiere. Este truco sólo funciona con Byte.


También se puede hacer lo siguiente:

Dim b() As Byte
b = StrConv(Text1.Text, vbFromUnicode)

Cada carta ahora ocupará un byte, pero los caracteres extendidos se habrá ido. Sólo haga esto si la página actual de códigos del sistema contiene los caracteres necesarios.


Se pueden copiar los caracteres manualmente a una matriz:

Dim s() As String, i As Long
ReDim s(1 To Len(Text1.Text))

For i = 1 To UBound(s)
  s(i) = Mid$(Text1.Text, i, 1)
Next

o incluso se puede evitar la creación de una matriz en absoluto, becase Mid sirve también como un operador paso a paso que cambia de un personaje en su lugar, sin necesidad de copiar o distribuir cualquier cosa:

Dim s As String
s = Text1.Text

Mid$(s, 3, 1) = "!"

Otros consejos

No se puede hacer lo mismo en VB6, ya que no tiene un tipo de datos de caracteres.

Se puede dividir la cadena en una matriz de cadenas, cada una conteniendo un solo carácter:

Dim chararray(Len(txt1.Text) - 1) As String
For i = 1 to Len(txt1.Text)
  chararray(i - 1) = Mid(txt1.Text, i, 1)
Next

Editar:

Para atravesar una cadena y sustituir caracteres, sólo tiene un bucle sobre su longitud y utilizar la función de cadena para manipularlo:

' Copy the value of the proeprty to a local variable
Dim text as String = txt1.Text
' Loop over the length of the string
For i = 1 to Len(text)
  ' Check the value of a character
  If Mid(text, i, 1) = " " Then
    ' Replace a character
    Mid(textx, i, 1) = "*"
  End If
Next

VB6 tiene un tipo String lo que este código se convierte simplemente en:

Dim x As String
x = Text1.Text

Se puede manipular el texto en el lugar y manipular caracteres individuales usando las funciones de cadena de VB6.

En los raros casos en que realmente necesita una matriz de los códigos de caracter, tiene que declarar una matriz Byte (VB no tiene ningún tipo char), entonces puede simplemente asignar la cadena a la matriz, o el uso StrConv para manejar Unicode puntos de código diferente, como se muestra por @GSerg.

Para cuerdas matriz :

Public Function str2Array(xString As String) As String()
Dim tmpArray() As String
Dim tmpchar As String

' /* For Each Character In The String */
For I = 1 To Len(xString)

    ' /* Retrieve The Character */
    tmpchar = Mid(xString, I, 1)
    ' /* Push It Into The Temporary Array */
    spush tmpArray, tmpchar
Next I

' /* Return The Array To The Calling Procedure */
str2Array = tmpArray
End Function

Usted puede obtener el valor Unicode de cada carácter de la cadena de esta manera:

Dim chararray (1 Para Len (txt1.Text)) As Long

Para i = 1 a Len (txt1.Text)   chararray (i) = ASCW (Mid (Text1.Text, i, 1)) Siguiente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top