Pergunta

Considerar:

char [] chararray = txt1.Text;

Como fazemos o mesmo no Visual Basic 6.0?

Foi útil?

Solução

Isso depende do que você eventualmente quer fazer.

Você pode, por exemplo, fazer isso no VB6:

Dim b() As Byte
b = Text1.Text

Assim o b a matriz será redimensionada para manter os dados unicode de "string" - Mas então cada personagem será dividido em dois bytes, o que provavelmente não é o que você deseja. Este truque só funciona com Byte.


Você também pode fazer isso:

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

Cada carta agora ocupará um byte, mas os personagens estendidos desaparecerão. Faça isso apenas se a página de código do sistema atual contiver os caracteres necessários.


Você pode copiar os personagens manualmente para uma 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

Ou você pode até evitar criar uma matriz, Becase Mid Também serve como operador de indexador que altera um caractere em vigor, sem copiar ou alocar nada:

Dim s As String
s = Text1.Text

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

Outras dicas

Você não pode fazer o mesmo no VB6, pois ele não possui um tipo de dados de caracteres.

Você pode dividir a corda em uma matriz de cordas, cada uma contendo um único caractere:

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 atravessar uma string e substituir os caracteres, você pode simplesmente fazer um loop por comprimento e usar a função String para manipulá -la:

' 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 tem um String digite para que este código simplesmente se torne:

Dim x As String
x = Text1.Text

Você pode manipular esse texto no local e manipular caracteres individuais usando as funções da string VB6.

Nos raros casos em que você realmente precisa de uma matriz dos códigos de caracter, você precisa declarar um Byte Array (VB não tem char tipo), então você pode simplesmente atribuir a string à matriz ou usar StrConv Para lidar com os pontos do Código Unicode de maneira diferente, como mostra o @GSerg.

String para 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

Você pode obter o valor Unicode de cada caractere da string dessa maneira:

Dim Chararray (1 a Len (txt1.text)) por tempo

Para i = 1 a len (txt1.text) chararray (i) = ascw (mid (text1.text, i, 1)) próximo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top