Класс MWUtil

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

Прототипы функции используют Visual 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, передаете в Nothing вместо Application к MWInitApplicationWithMCROptions.

Функциональный IsMCRJVMEnabled () как Boolean

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

Параметры

'none'.

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

Boolean

Функциональный IsMCRInitialized () как Boolean

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

Параметры

'none'.

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

Boolean

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

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

Параметры

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

pVarArg

Variant

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

[Var0], [Var1], ...

Variant

Дополнительный список Variants, чтобы упаковать в массив. От 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 как Boolean = ложь], [pVar0], [pVar1]..., [pVar31])

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

Параметры

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

VarArg

Variant

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

nStartAt

Long

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

bAutoResize

Boolean

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

[pVar0],[pVar1], ...

Variant

Дополнительный список Variants, чтобы получить элементы массивов, содержавшиеся в 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 случайные вектор-столбцы, с длиной 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

Sub MWDate2VariantDate (pVar)

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

Параметры

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

pVar

Variant

Variant быть преобразованным

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

'none'.

Комментарии

MATLAB обрабатывает даты как числа с плавающей запятой с двойной точностью с 0,0 представлениями 0/0/00 0:00:00. По умолчанию числовые даты, которые являются выходными параметрами от скомпилированных функций MATLAB, передаются как Doubles, который должен быть постепенно уменьшен смещением даты 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