Справочное руководство по TDMS 7.0 API
VariantToArray Метод
Смотри также  Пример  Отправить замечание
pVal
VB Script Массив
TDMSUtility Объект : VariantToArray Метод

Glossary Item Box

Описание

Преобразовывает массив формата VB Script в типизированный массив формата VBA

Опеделение

Visual Basic
Public Function VariantToArray( _
   ByRef pVal As Variant _
) As Variant

Параметры

pVal
VB Script Массив

Заметки

Одно из ключевых отличий VB Script от VBA - это отсутствие типизированных переменных. Все переменные в VB Script имеют тип Variant. Именно поэтому в VB Script нельзя объявлять переменные как в VBA (Например: myParam As String или myObject As TDMSObject). Тоже самое касается и массивов. Все массивы в VB Script являются контейнерами типа Variant, содержащими в своём составе последовательность элементов, так же имеющих тип Variant. Такая особенность дает возможность хранить в одном массиве совершенно разные эелементы, числа, строки, объекты. В VBA напротив, масивом может быть контейнер типа Variant содержащий в своем составе типизированные элементы, например чистые строки, или числа в том виде "как есть".

Многие COM объекты спроектированны для использования в среде VBA. Методы таких объектов как правило возвращают типизированные массивы, работать с которыми в среде VB Script невозможно. Именно для этого в TDMS были реализованы методы:

ArrayToVariant - позволяющий конвертировать типизированные VBA массивы в массивы формата VBScript и

VariantToArray позволяющий делать обратное преобразование.

Пример

VB Script (Visual Basic)Скопировать код
'-------------------------------------------------------------------
set AcApp = GetObject(,"AutoCAD.Application.16")

if AcApp is nothing then
  MsgBox "Приложение не загруженно"
end if

set Doc = AcApp.ActiveDocument
set ModelSpace = Doc.ModelSpace

'Объявляем и заполняем стандартный VBS массив
Dim startPoint(2)
Dim endPoint(2)

startPoint(0) = 1.0
startPoint(1) = 1.0
startPoint(2) = 1.0

endPoint(0) = 2.0
endPoint(1) = 2.0
endPoint(2) = 2.0


'производим обратную конвертацию масива в формате VBS в типизированный массив формата VBA
'т.к функция Автокада ModelSpace.AddLine может принимать на вход только типизированный массив

Dim convArr1, convArr2
convArr1 = ThisApplication.Utility.VariantToArray(startPoint)
convArr2 = ThisApplication.Utility.VariantToArray(endPoint)

ModelSpace.AddLine convArr1, convArr2 '(функция отработала нормально. в противном случае - ошибка о несоответствии типов)


'-------------------------------------------------------------------
'Демонстрация преобразования типизированного массива в массив формата VBS

for each entity in ModelSpace

   if TypeName(entity) = "IAcadBlockReference" then

    Dim Attributes
    Attributes = entity.GetAttributes 'Типизированный массив формата VBA

    'Преобразовываем в формат VBS
    Dim NewArray
    NewArray = ThisApplication.Utility.ArrayToVariant(Attributes)

    for each arrElem in NewArray
      MsgBox arrElem.ObjectName
    next

  end if
next

Смотри также

© 2023 CSoft Development. Все права защищены.