Класс MWUtil

The MWUtil класс содержит набор статических служебных методов, используемых в обработке массивов и инициализации приложений. Этот класс реализован внутренне как синглтон (только один глобальный образец этого класса на образец Microsoft® Excel®). Наиболее эффективно объявить одну переменную этого типа в глобальных возможностях в каждом модуле, который ее использует. Методы MWUtil являются:

Прототипы функций используют Visual Basic® синтаксис.

Sub MWInitApplication (pApp как объект

)

Инициализирует библиотеку с текущим образцом Microsoft Excel.

Параметры

АргументНапечататьОписание

pApp

Object

Допустимая ссылка на текущее приложение Excel

Возвращаемое значение

Ничего.

Замечания

Эта функция должна вызываться один раз для каждого сеанса Excel, в котором используются COM- компонентов, созданные MATLAB® Compiler™. Ошибка генерируется, если вызов метода выполнен в класс представителя любого MATLAB Compiler SDK™ COM- компонента, и библиотека не была инициализирована.

Пример

Эта выборка Visual Basic инициализирует MWComUtil библиотека с текущим образцом Excel. Глобальная переменная типа Object именованные MCLUtil содержит образец MWUtil Класс и другая глобальная переменная типа Boolean именованные bModuleInitialized сохраняет состояние процесса инициализации. Частная стандартная подпрограмма InitModule() создает образец MWComUtil класс и вызывает MWInitApplication метод с аргументом Application. После успешного выполнения этой функции все последующие вызовы выходят без воссоздания объекта.

Dim MCLUtil As Object
Dim bModuleInitialized As Boolean

Private Sub InitModule()
    If Not bModuleInitialized Then
        On Error GoTo Handle_Error
        If MCLUtil Is Nothing Then
            Set MCLUtil = CreateObject("MWComUtil.MWUtil")
        End If
        Call MCLUtil.MWInitApplication(Application)
        bModuleInitialized = True
        Exit Sub
Handle_Error:
        bModuleInitialized = False
    End If
End Sub

Примечание

Если вы разрабатываете одновременно с несколькими версиями MATLAB и MWComUtil.dllдля примера использование этого синтаксиса:

Set MCLUtil = CreateObject("MWComUtil.MWUtil")
требует повторной компиляции COM-модулей при каждом обновлении. Чтобы избежать этого, сделайте вызов к MWUtil версия модуля, для примера:
Set MCLUtil = CreateObject("MWComUtil.MWUtilx.x")
где x.x является определенным номером версии.

Sub MWI nit Application With MCRO ptions (p App как объект, [mcr Option List])

Запустите среду выполнения MATLAB с опциями среды выполнения MATLAB. Подобно mclInitializeApplication (MATLAB Compiler SDK).

Параметры

АргументНапечататьОписание

pApp

Object

Допустимая ссылка только при вызове из приложения Excel

COM-клиенты, не входящие в Excel, проходят Empty.

Возвращаемое значение

Ничего.

Замечания

Вызовите эту функцию, чтобы пройти в опциях MATLAB Runtime (nojvm, logfile, и т.д.). Вызывайте эту функцию один раз на процесс.

Пример

Эта выборка Visual Basic инициализирует MWComUtil библиотека с текущим образцом Excel. Глобальная переменная типа Object именованные MCLUtil содержит образец MWUtil Класс и другая глобальная переменная типа Boolean именованные bModuleInitialized сохраняет состояние процесса инициализации. Частная стандартная подпрограмма InitModule() создает образец MWComUtil класс и вызывает MWInitApplicationWithMCROptions метод с аргументом Application и строковые массивы, содержащий опции. После успешного выполнения этой функции все последующие вызовы выходят без воссоздания объекта. Когда эта функция успешно выполняется, MATLAB Runtime запускается без JVM™ и логфайла с именем logfile.txt.

Dim MCLUtil As Object
Dim bModuleInitialized As Boolean

Private Sub InitModule()
    If Not bModuleInitialized Then
        On Error GoTo Handle_Error
        If MCLUtil Is Nothing Then
            Set MCLUtil = CreateObject("MWComUtil.MWUtil")
        End If
			 Dim mcrOptions(1 To 3) as String
			 mcrOptions(1) = "-nojvm"
			 mcrOptions(2) = "-logfile"
			 mcrOptions(3) = "logfile.txt"
        Call MCLUtil.MWInitApplicationWithMCROptions(Application, mcrOptions)
        bModuleInitialized = True
        Exit Sub
Handle_Error:
        bModuleInitialized = False
    End If
End Sub

Примечание

Если вы не используете Excel, передайте Nothing вместо Application на MWInitApplicationWithMCROptions.

Функция IsMCRJVMEnabled () Как логический

Возвращает true если MATLAB Runtime запускается с JVM; в противном случае возвращается false.

Параметры

Ничего.

Возвращаемое значение

Boolean

Функция IsMCRInitialized () Как логический

Возвращает true если MATLAB Runtime инициализируется; в противном случае возвращается false

Параметры

Ничего.

Возвращаемое значение

Boolean

Sub MWPack (pVarArg, [Var0], [Var1],..., [Var31])

Упакует список переменной длины Variant аргументы в одну Variant массив. Эта функция обычно используется для создания varargin камера из списка отдельных входов. Каждый вход в списке добавляется в массив, только если он не пуст или отсутствует. (В Visual Basic отсутствующий параметр обозначается Variant тип vbError со значением &H80020004.)

Параметры

АргументНапечататьОписание

pVarArg

Variant

Получает полученный массив

[Var0], [Var1], ...

Variant

Необязательный список Variants, чтобы упаковать в массив. Может быть передано от 0 до 32 аргументов.

Возвращаемое значение

Ничего.

Замечания

Эта функция всегда освобождает содержимое pVarArg перед обработкой списка.

Пример

Этот пример использует MWPack в функции формулы для создания varargin Камерой передать как параметр входа в метод, скомпилированный из функции MATLAB с сигнатурой

function y = mysum(varargin)
    y = sum([varargin{:}]);

Функция возвращает сумму элементов в varargin. Предположим, что эта функция является методом класса с именем myclass включенный в компонент с именем mycomponent с версией 1.0. Функция Visual Basic позволяет до 10 входов и возвращает результат y. Если происходит ошибка, функция возвращает сообщение об ошибке. Эта функция принимает, что MWInitApplication был вызван ранее.

Function mysum(Optional V0 As Variant, _
               Optional V1 As Variant, _
               Optional V2 As Variant, _
               Optional V3 As Variant, _
               Optional V4 As Variant, _
               Optional V5 As Variant, _
               Optional V6 As Variant, _
               Optional V7 As Variant, _
               Optional V8 As Variant, _
               Optional V9 As Variant) As Variant
Dim y As Variant
Dim varargin As Variant
Dim aClass As Object
Dim aUtil As Object
    
    On Error Goto Handle_Error
    Set aClass = CreateObject("mycomponent.myclass.1_0")
    Set aUtil = CreateObject("MWComUtil.MWUtil")
    Call aUtil.MWPack(varargin,V0,V1,V2,V3,V4,V5,V6,V7,V8,V9)
    Call aClass.mysum(1, y, varargin)
    mysum = y
    Exit Function
Handle_Error:
    mysum = Err.Description
End Function

Sub MWU npack (Var Arg, [n Start At As Long], [b Auto Resize As Boolean = False], [p Var0], [p Var1],..., [p Var31])

Распаковка массива Variants в отдельные Variant аргументы. Эта функция обеспечивает обратную функциональность MWPack и обычно используется для обработки varargout камера в отдельные Variantс.

Параметры

АргументНапечататьОписание

VarArg

Variant

Входной массив Variants, которые будут обработаны

nStartAt

Long

Необязательный начальный индекс (нулевой) в массиве, чтобы начать обработку. По умолчанию = 0.

bAutoResize

Boolean

Необязательный флаг автоматического изменения размера. Если этот флаг True, все выходные аргументы области значений Excel изменяются в соответствии с размерностями Variant для копирования. Процесс изменения размера применяется относительно верхнего левого угла заданной области значений. По умолчанию = False.

[pVar0],[pVar1], ...

Variant

Необязательный список Variants для приема элементов массива, содержащихся в VarArg. Может быть передано от 0 до 32 аргументов.

Возвращаемое значение

Ничего.

Замечания

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

Пример

Этот пример использует MWUnpack для обработки varargout камера в несколько области значений Excel при автоматическом изменении размера каждой области значений. The varargout параметр передается из метода, который был скомпилирован из функции MATLAB.

function varargout = randvectors
    for i=1:nargout
        varargout{i} = rand(i,1);
    end

Эта функция создает последовательность nargout случайные векторы-столбцы с длиной i-го вектора, равной i. предположим, что эта функция включена в класс с именем myclass включенный в компонент с именем mycomponent с версией 1.0. Стандартная подпрограмма Visual Basic не принимает аргументов и помещает результаты в столбцы Excel, начиная с A1, B1, C1 и D1. Если происходит ошибка, в поле сообщения отображается текст ошибки. Эта функция принимает, что MWInitApplication был вызван ранее.

Sub GenVectors()
    Dim aClass As Object
    Dim aUtil As Object
    Dim v As Variant
    Dim R1 As Range
    Dim R2 As Range
    Dim R3 As Range
    Dim R4 As Range
    
    On Error GoTo Handle_Error
    Set aClass = CreateObject("mycomponent.myclass.1_0")
    Set aUtil = CreateObject("MWComUtil.MWUtil")
    Set R1 = Range("A1")
    Set R2 = Range("B1")
    Set R3 = Range("C1")
    Set R4 = Range("D1")
    Call aClass.randvectors(4, v)
    Call aUtil.MWUnpack(v,0,True,R1,R2,R3,R4)
    Exit Sub
Handle_Error:
    MsgBox (Err.Description)
End Sub

Подстанция MWDate2VariantDate (pVar

)

Преобразует выходные даты из MATLAB в Variant дат.

Параметры

АргументНапечататьОписание

pVar

Variant

Variant будет преобразован

Возвращаемое значение

Ничего.

Замечания

MATLAB обрабатывает даты как числа с плавающей запятой с двойной точностью с 0,0, представляющими 0/0/00 00:00:00. По умолчанию числовые даты, которые являются выходными параметрами из скомпилированных функций MATLAB, передаются как Doubles, которые должны быть уменьшены смещением даты COM, а также принуждены к датам COM. The MWDate2VariantDate метод выполняет это преобразование и дополнительно преобразует даты в форме вектора символов в COM-типы дат.

Пример

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

function x = getdates(n, inc)
    y = now;
    for i=1:n
        x(i,1) = y + (i-1)*inc;
    end

Эта функция создает n-length вектора-столбца числовых значений, представляющих даты, начиная с текущей даты и времени с каждым элементом, увеличенным на inc дней. Предположим, что эта функция включена в класс с именем myclass включенный в компонент с именем mycomponent с версией 1.0. Стандартная подпрограмма принимает область значений Excel и Double в качестве входных параметров и помещает сгенерированные даты в поставляемую область значений. Если происходит ошибка, в поле сообщения отображается текст ошибки. Эта функция принимает, что MWInitApplication был вызван ранее.

Sub GenDates(R As Range, inc As Double)
    Dim aClass As Object
    Dim aUtil As Object
    
    On Error GoTo Handle_Error
    Set aClass = CreateObject("mycomponent.myclass.1_0")
    Set aUtil = CreateObject("MWComUtil.MWUtil")
    Call aClass.getdates(1, R, R.Rows.Count, inc)
    Call aUtil.MWDate2VariantDate(R)
    Exit Sub
Handle_Error:
    MsgBox (Err.Description)
End Sub