Символьный массив в Visual Basic 6.0 - PullRequest
3 голосов
/ 29 сентября 2010

Рассмотрим:

char [] chararray = txt1.Text;

Как мы делаем то же самое в Visual Basic 6.0?

Ответы [ 5 ]

8 голосов
/ 29 сентября 2010

Это зависит от того, что вы в конечном итоге хотите сделать.

Вы можете, например, сделать это в VB6:

Dim b() As Byte
b = Text1.Text

Таким образом, размер массива b будет изменен для хранения данных Unicode из "string", но тогда каждый символ будет разделен на два байта, что, вероятно, не то, что вам нужно. Этот трюк работает только с Byte.


Вы также можете сделать это:

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

Каждая буква теперь будет занимать один байт, но расширенные символы исчезнут. Делайте это только в том случае, если текущая системная кодовая страница содержит необходимые символы.


Вы можете скопировать символы вручную в массив:

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

Или вы можете вообще избежать создания массива, поскольку Mid также служит оператором индексатора, который изменяет символ на месте, без копирования или выделения чего-либо:

Dim s As String
s = Text1.Text

Mid$(s, 3, 1) = "!"
4 голосов
/ 29 сентября 2010

Вы не можете сделать то же самое в VB6, так как у него нет символьного типа данных.

Вы можете разбить строку на массив строк, каждая из которых содержит один символ:

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:

Чтобы обойти строку и заменить символы, вы можете просто зациклить ее длину и использовать строковую функцию для управления ею:

' 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
2 голосов
/ 29 сентября 2010

VB6 имеет тип String, поэтому этот код просто становится:

Dim x As String
x = Text1.Text

Вы можете манипулировать этим текстом на месте и манипулировать отдельными символами, используя строковые функции VB6.

В тех редких случаях, когда вам действительно нужен массив кодов символов, вам нужно объявить массив Byte (VB не имеет типа char), затем вы можете просто присвоить строку массиву или использовать StrConv для обработки кодовых точек Unicode по-другому, как показано @ GSerg.

0 голосов
/ 19 июля 2017

Вы можете получить значение UNICODE для каждого символа строки следующим образом:

Dim chararray (от 1 до Len (txt1.Text)) как длинный

для i = 1 в лен (txt1.Text) chararray (i) = ASCW (Mid (Text1.Text, i, 1)) Далее

0 голосов
/ 29 сентября 2010

Строка в массив :

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...