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

Объявление массивов

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

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Хотя размер массива указывается как 5, он может содержать 6 значений, поскольку индекс массива начинается с ZERO.
  • Индекс массива не может быть отрицательным.
  • Массивы VBScript могут хранить любой тип переменной в массиве. Следовательно, массив может хранить целое число, строку или символы в одной переменной массива.

Назначение значений массиву

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

Пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		   'Number
   arr(3) = 2.45 		   'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM


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

Массивы не ограничиваются одним измерением, однако они могут иметь максимум 60 измерений. Двумерными массивами являются наиболее часто используемые.

пример

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

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

Объявление ReDim

Оператор ReDim используется для объявления переменных динамического массива и распределения или перераспределения пространства для хранения.

Синтаксис ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Параметр Описание
  • Preserve - необязательный параметр, используемый для сохранения данных в существующем массиве при изменении размера последнего измерения.
  • Varname - обязательный параметр, который обозначает имя переменной, которое должно соответствовать стандартным соглашениям об именах.
  • Subscript - требуемый параметр, который указывает размер массива.
пример

В следующем примере массив был переопределен, а затем значения сохранялись при изменении существующего размера массива.

Примечание. При изменении размера массива, меньшего, чем это было первоначально, данные в устраненных элементах будут потеряны.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

XYZ
41.25
22
3
4
5
6
7


Методы массива

В VBScript есть встроенные функции, которые помогают разработчикам эффективно обрабатывать массивы. Все методы, которые используются вместе с массивами, перечислены ниже. Чтобы узнать об этом, нажмите на имя метода.

Функции для работы с массивами

LBound

Функция LBound возвращает наименьший индекс указанного массива.Следовательно, LBound массива - ZERO.

Синтаксис LBound(ArrayName[,dimension])
Параметы и Описание
  • ArrayName - обязательный параметр. Этот параметр соответствует имени массива.
  • Размер - необязательный параметр. Это принимает целочисленное значение, соответствующее размеру массива. Если это «1», то он возвращает нижнюю границу первого измерения;если это «2», то он возвращает нижнюю границу второго измерения и так далее.
пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim arr(5) as Variant
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript     'String
   arr(2) = 100           'Number
   arr(3) = 2.45          'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
   msgbox("The smallest Subscript value of  the given array is : " & LBound(arr))

   ' For MultiDimension Arrays :
   Dim arr2(3,2) as Variant
   msgbox("The smallest Subscript of the first dimension of arr2 is : " & LBound(arr2,1))
   msgbox("The smallest Subscript of the Second dimension of arr2 is : " & LBound(arr2,2))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The smallest Subscript value of the given array is : 0
The smallest Subscript of the first dimension of arr2 is : 0
The smallest Subscript of the Second dimension of arr2 is : 0

Функция, которая возвращает целое число, соответствующее наименьшему индексу данных массивов.

UBound

Функция UBound возвращает наибольший индекс указанного массива.Следовательно, это значение соответствует размеру массива.

Синтаксис UBound(ArrayName[,dimension])
Параметры и Описание
  • ArrayName - обязательный параметр. Этот параметр соответствует имени массива.
  • Размер - необязательный параметр. Это принимает целочисленное значение, соответствующее размеру массива. Если это «1», то он возвращает нижнюю границу первого измерения;если он равен «2», то он возвращает нижнюю границу второго измерения и т. д.
пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim arr(5) as Variant
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript     'String
   arr(2) = 100           'Number
   arr(3) = 2.45          'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
   msgbox("The smallest Subscript value of  the given array is : " & UBound(arr))

   ' For MultiDimension Arrays :
   Dim arr2(3,2) as Variant
   msgbox("The smallest Subscript of the first dimension of arr2 is : " & UBound(arr2,1))
   msgbox("The smallest Subscript of the Second dimension of arr2 is : " & UBound(arr2,2))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The Largest Subscript value of the given array is : 5
The Largest Subscript of the first dimension of arr2 is : 3
The Largest Subscript of the Second dimension of arr2 is : 2

Функция, которая возвращает целое число, соответствующее самому большому индексу данных массивов.



Split

Функция Split возвращает массив, который содержит определенное количество значений, разделенных на основе разделителя.

Синтаксис Split(expression [,delimiter[, count[, compare]]])
Параметры и Описание
  • Выражение - требуемый параметр. Строковое выражение, которое может содержать строки с разделителями.
  • Разделитель - необязательный параметр. Параметр, который используется для преобразования в массивы на основе разделителя.
  • Count - необязательный параметр. Количество подстрок, которые нужно вернуть, и если указано как -1, то возвращаются все подстроки.
  • Compare - Необязательный параметр. Этот параметр указывает, какой метод сравнения следует использовать.
  • 0 = vbBinaryCompare - выполняет двоичное сравнение
  • 1 = vbTextCompare - выполняет текстовое сравнение
пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   ' Splitting based on delimiter comma '$'
   Dim a as Variant
   Dim b as Variant
   
   a = Split("Red $ Blue $ Yellow","$")
   b = ubound(a)
   
   For i = 0 to b
      msgbox("The value of array in " & i & " is :"  & a(i))
   Next
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The value of array in 0 is :Red
The value of array in 1 is : Blue
The value of array in 2 is : Yellow

Функция, которая возвращает массив, содержащий указанное количество значений. Разделить на разделитель.

Join

Это функция, которая возвращает строку, содержащую указанное количество подстрок в массиве. Это полная противоположная функция метода разделения.

Синтаксис Join(List[,delimiter])
Параметры и Описание
  • Список - требуемый параметр. Массив, содержащий подстроки, которые должны быть соединены.
  • Разделитель - необязательный параметр. Символ, который используется как разделитель при возврате строки. По умолчанию разделителем является Space.
пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   ' Join using spaces
   a = array("Red","Blue","Yellow")
   b = join(a)
   msgbox("The value of b " & " is :"  & b)
  
   ' Join using $
   b = join(a,"$")
   msgbox("The Join result after using delimiter is : " & b)
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The value of b is :Red Blue Yellow
The Join result after using delimiter is : Red$Blue$Yellow

Функция, которая возвращает строку, содержащую указанное количество подстрок в массиве. Это полная противоположная функция метода разделения.

Filter

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

Синтаксис Filter(inputstrings, value[, include [,compare]])
Параметры и Описание
  • Inputstrings - обязательный параметр. Этот параметр соответствует массиву строк для поиска.
  • Значение - требуемый параметр. Этот параметр соответствует строке для поиска по параметру inputstrings.
  • Include - необязательный параметр. Это логическое значение, которое указывает, следует ли возвращать подстроки, которые включают или исключают.
  • Compare - Необязательный параметр. Этот параметр описывает, какой метод сравнения строк должен использоваться.
  • 0 = vbBinaryCompare - выполняет двоичное сравнение
  • 1 = vbTextCompare - выполняет текстовое сравнение
пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim a,b,c,d as Variant
   a = array("Red","Blue","Yellow")
   b = Filter(a,"B")
   c = Filter(a,"e")
   d = Filter(a,"Y")
  
   For each x in b
      msgbox("The Filter result 1: " & x)
   Next
  
   For each y in c
      msgbox("The Filter result 2: " & y)
   Next
  
   For each z in d
      msgbox("The Filter result 3: " & z)
   Next
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.p The Filter result 1: Blue
The Filter result 2: Red
The Filter result 2: Blue
The Filter result 2: Yellow
The Filter result 3: Yellow

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

IsArray

Функция IsArray возвращает логическое значение, указывающее, является ли указанная входная переменная переменной или переменной NOT переменной массива.

Синтаксис IsArray(variablename)
пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim a,b as Variant
   a = array("Red","Blue","Yellow")
   b = "12345"
  
   msgbox("The IsArray result 1 : " & IsArray(a))
   msgbox("The IsArray result 2 : " & IsArray(b))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The IsArray result 1 : True
The IsArray result 2 : False

Функция, возвращающая логическое значение, указывающее, является ли входная переменная массивом.

Erase

Функция Erase используется для сброса значений массивов фиксированного размера и освобождения памяти динамических массивов.Он ведет себя в зависимости от типа массивов.

Синтаксис Erase ArrayName
  • Фиксированный числовой массив, каждый элемент в массиве сбрасывается до нуля.
  • Исправлен строковый массив, каждый элемент в массиве сбрасывается до нулевой длины "".
  • Массив объектов, каждый элемент в массиве сбрасывается до специального значения Nothing.
пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim NumArray(3)
   NumArray(0) = "VBScript"
   NumArray(1) = 1.05
   NumArray(2) = 25
   NumArray(3) = #23/04/2013#
  
   Dim DynamicArray()
   ReDim DynamicArray(9)   ' Allocate storage space.
  
   Erase NumArray          ' Each element is reinitialized.
   Erase DynamicArray      ' Free memory used by array.
  
   ' All values would be erased.
   msgbox("The value at Zeroth index of NumArray is " & NumArray(0))
   msgbox("The value at First index of NumArray is " & NumArray(1))
   msgbox("The value at Second index of NumArray is " & NumArray(2))
   msgbox("The value at Third index of NumArray is " & NumArray(3))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The value at Zeroth index of NumArray is
The value at First index of NumArray is
The value at Second index of NumArray is
The value at Third index of NumArray is

Функция, которая восстанавливает выделенную память для переменных массива.

 С уважением, авторы сайта Компьютерапия




Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok