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 ответов
Если вы хотите строка массив в отличие от вариант массив 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 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