You are here:
Basic > VB6
| Contents | Next
Byte Arrays in VB6 (Visual Basic 6)
Byte arrays are somewhat special because Visual Basic lets you directly assign
strings to them. In this case, Visual Basic performs a direct memory copy of the
contents of the string. Because all Visual Basic 5 and 6 strings are Unicode strings
(two bytes per character), the target array is redimensioned to account for the
actual string length in bytes (which you can determine using the LenB function).
If the string contains only characters whose code is in the range 0 through 255
(the case if you work with Latin alphabets), every other byte in the array will
Dim b() As Byte, Text As String
Text = "123"
b() = Text ' Now b() contains six items: 49 0 50 0 51 0
It's also possible to perform the opposite operation:
Text = b()
This special treatment reserved for Byte arrays is meant to ease the conversion
from old Visual Basic 3 applications that use strings to hold binary data, as
I explained in "The Byte Data Type" section, earlier in this chapter.
You can exploit this feature to create blindingly fast string routines when you
have to process each individual character in a string. For example, see how quickly
you can count all the spaces in a string:
' NOTE: this function might not work with non-Latin alphabets.
Function CountSpaces(Text As String) As Long
Dim b() As Byte, i As Long
b() = Text
For i = 0 To UBound(b) Step 2
' Consider only even-numbered items.
' Save time and code using the function name as a local variable.
If b(i) = 32 Then CountSpaces = CountSpaces + 1
The preceding routine is about three times faster than a regular routine, which
uses Asc and Mid$ functions to process all the characters in the argument, and
even faster if you turn on the Remove Array Bounds Check compiler optimization.
The only drawback of this technique is that it isn't Unicode-friendly because
it considers only the least significant byte in each 2-byte character. If you
plan to convert your application to some language that relies on Unicode—Japanese,
for example—you should stay clear of this optimization technique.
More Topics on Visual Basic 6 Arrays
<< Previous | Contents
| Next >>