Класс MWUtil

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

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

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

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

Параметры

АргументВводОписание

pApp

Object

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

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

'none'.

Комментарии

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

Пример

Эта выборка 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 MWInitApplicationWithMCROptions (pApp как объект, [mcrOptionList])

Запустите MATLAB Runtime с опций MATLAB Runtime. Подобно mclInitializeApplication.

Параметры

АргументВводОписание

pApp

Object

Действительная ссылка только, когда названо из приложения Excel

Non COM-клиенты Excel передает в Empty.

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

'none'.

Комментарии

Вызовите эту функцию, чтобы передать в опциях 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, передаете в Empty вместо Application к MWInitApplicationWithMCROptions.

Функциональный IsMCRJVMEnabled () как булевская переменная

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

Параметры

'none'.

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

Boolean

Функциональный IsMCRInitialized () как булевская переменная

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

Параметры

'none'.

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

Boolean

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

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

Параметры

АргументВводОписание

pVarArg

Variant

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

[Var0], [Var1], ...

Variant

Дополнительный список Variant s, чтобы упаковать в массив. От 0 до 32 аргументов может быть передан.

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

'none'.

Комментарии

Эта функция всегда освобождает содержимое 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 MWUnpack (VarArg, [nStartAt настолько же долго], [bAutoResize как булевская переменная = ложь], [pVar0], [pVar1]..., [pVar31])

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

Параметры

АргументВводОписание

VarArg

Variant

Входной массив Variant s, чтобы быть обработанным

nStartAt

Long

Дополнительное начальное значение индекса (основанное на нуле) в массиве, чтобы начать обрабатывать. Значение по умолчанию = 0.

bAutoResize

Boolean

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

[pVar0],[pVar1], ...

Variant

Дополнительный список Variant s, чтобы получить элементы массивов, содержавшиеся в VarArg. От 0 до 32 аргументов может быть передан.

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

'none'.

Комментарии

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

Пример

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

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

Эта функция производит последовательность nargout случайные вектор-столбцы с длиной ith вектора, равного 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

Sub MWDate2VariantDate (pVar)

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

Параметры

АргументВводОписание

pVar

Variant

Variant, который будет преобразован

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

'none'.

Комментарии

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

Пример

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

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

Эта функция производит n - вектор-столбец длины числовых значений, представляющих даты, начинающие с текущей даты и время с каждым элементом, постепенно увеличенным днями 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