tableau de caractères dans Visual Basic 6.0
-
26-09-2019 - |
Question
Considérez:
char [] chararray = txt1.Text;
Comment nous faisons la même chose dans Visual Basic 6.0?
La solution
Cela dépend de ce que vous voulez éventuellement faire.
Vous pouvez, par exemple, faire en VB6:
Dim b() As Byte
b = Text1.Text
De cette façon, le tableau de b
sera redimensionnée pour contenir les données Unicode de "string"
- mais chaque personnage sera divisé entre deux octets qui est probablement pas ce que vous voulez. Cette astuce ne fonctionne qu'avec Byte
.
Vous pouvez aussi le faire:
Dim b() As Byte
b = StrConv(Text1.Text, vbFromUnicode)
Chaque lettre va maintenant occuper un octet, mais les caractères étendus sera disparu. Seulement faire si la page de code du système contient les caractères requis.
Vous pouvez copier les caractères manuellement à un tableau:
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
Ou vous pouvez même éviter de créer un tableau du tout, becase Mid
sert également un opérateur indexeur qui change un caractère en place, sans copier ou allouer quoi que ce soit:
Dim s As String
s = Text1.Text
Mid$(s, 3, 1) = "!"
Autres conseils
Vous ne pouvez pas faire la même chose en VB6, car il ne dispose pas d'un type de données de caractère.
Vous pouvez diviser la chaîne en un tableau de chaînes, chacune contenant un seul caractère:
Dim chararray(Len(txt1.Text) - 1) As String
For i = 1 to Len(txt1.Text)
chararray(i - 1) = Mid(txt1.Text, i, 1)
Next
Edit:
Pour parcourir une chaîne et remplacer des caractères, vous pouvez faire une boucle sur la longueur de et utiliser la fonction de chaîne pour le manipuler:
' 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 a un type de String
si ce code devient simplement:
Dim x As String
x = Text1.Text
Vous pouvez manipuler ce texte en place et de manipuler des caractères individuels en utilisant les fonctions de chaîne VB6.
Dans les rares cas où vous avez vraiment besoin d'un tableau des codes de caracter, vous devez déclarer un tableau de Byte
(VB n'a pas de type de char
), alors vous pouvez simplement assigner la chaîne au tableau, ou l'utilisation StrConv
pour gérer Unicode les points de code différemment, comme représenté par @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
Vous pouvez obtenir la valeur UNICODE de chaque caractère de la chaîne de cette manière:
Dim chararray (1 à Len (txt1.Text)) As Long
Pour i = 1 à Len (txt1.Text) chararray (i) = ASCW (Mid (Text1.Text, i, 1)) Suivant