VB6-определение массива строк

Я делаю проект, и мне нужно использовать VB6. Я борюсь с несколькими основными задачами, частично из-за (что я думаю) - это отсутствие документации, а частично потому, что я обычно использую языки с синтаксисом на основе C.

когда я определяю массив в C#, обычно следует:

string[] s = {"a", "b", "c", "d" };

Я хочу сделать это в VB6.

но в VB6, все, что я делал это:

Dim s(0 To 3) As String
s(0) = "a"
s(1) = "b"
s(2) = "c"
s(3) = "d"

есть ли более эффективный способ определения массива в VB6, чем пример я проиллюстрировал выше? Способ, подобный подходу C#?

4 ответов


Dim s
s = Array("a", "b", "c", "d")

Если вы хотите строка массив в отличие от вариант массив Array() даст;

Function ArrayString(ParamArray tokens()) As String()
    ReDim arr(UBound(tokens)) As String
    Dim i As Long
    For i = 0 To UBound(tokens)
        arr(i) = tokens(i)
    Next
    ArrayString = arr
End Function

...

Dim a() As String
a = ArrayString("foo", "bar", ..., "qux")

вот еще вариант:

Dim S() As String

S = Split("a|b|c|d", "|")

массивы фиксированного размера

когда верхняя граница указана в объявлении, создается фиксированный массив. Верхний предел всегда должен находиться в диапазоне длинного типа данных.

объявление фиксированного массива

Dim numbers(5) As Integer

если мы хотим указать нижний предел, то скобки должны включать как нижний, так и верхний предел вместе с ключевым словом To. Приведен пример этого под.

Dim numbers (1 To 6 ) As Integer

Многомерные Массивы

следующая инструкция объявляет двумерный массив 50 на 50 в рамках процедуры.

Dim AvgMarks ( 50, 50)

также можно определить нижние пределы для одного или обоих измерений, как для массивов фиксированного размера. Пример этого приведен здесь.

Dim Marks ( 101 To 200, 1 To 100)

статические и динамические массивы

вы создаете статический массив, используя оператор Dim с постоянный аргумент:

' This is a static array. 
Dim Names(100) As String

Visual Basic начинает индексировать массив с 0. Таким образом, предыдущий массив фактически содержит 101 элемент.

затем вы создаете массив, когда он вам действительно нужен, используя оператор ReDim:

' An array defined in a BAS module (with Private scope)
Dim Customers() As String
...
Sub Main()
' Here you create the array.
ReDim Customer(1000) As String
End Sub

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

Sub PrintReport()
' This array is visible only to the procedure.
ReDim Customers(1000) As String
' ...
End Sub