arreglo de caracteres en Visual Basic 6.0
-
26-09-2019 - |
Pregunta
Considere lo siguiente:
char [] chararray = txt1.Text;
¿Cómo hacemos lo mismo en Visual Basic 6.0?
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.
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