Типы данных для аргументов и возвращаемых значений серверных функций выражаются как типы данных Automation, которые являются не зависящими от языка типами, определенными протоколом Automation. Например, BSTR является широкосимвольным строковым типом, определяемым как тип автоматизации, и является тем же форматом данных, который используется языком Visual Basic ® для хранения строк. Любой СОМ-совместимый клиент должен поддерживать эти типы данных, хотя подробные сведения об объявлении этих типов и управлении ими являются специфичными для клиента.
В этой таблице показано, как MATLAB ® преобразует данные из MATLAB в типы COM.
| Тип MATLAB | Ближайший тип COM | Разрешенные типы |
|---|---|---|
| ручка | VT_DISPATCHVT_UNKNOWN | VT_DISPATCHVT_UNKNOWN |
| символьный вектор |
VT_BSTR | VT_LPWSTRVT_LPSTRVT_BSTRVT_FILETIMEVT_ERRORVT_DECIMALVT_CLSIDVT_DATE |
int16 |
VT_I2 | VT_I2 |
uint16 | VT_UI2 | VT_UI2 |
int32 | VT_I4 | VT_I4VT_INT |
uint32 | VT_UI4 | VT_UI4VT_UINT |
int64 | VT_I8 | VT_I8 |
uint64 | VT_UI8 | VT_UI8 |
single | VT_R4 | VT_R4 |
double |
VT_R8 | VT_R8VT_CY
|
logical | VT_BOOL
| VT_BOOL |
| случайная работа |
VT_I1 | VT_I1VT_UI1 |
variant - любой тип данных, кроме структуры или разреженного массива. (Дополнительные сведения см. в разделе Основные классы MATLAB.)
При использовании в качестве входного аргумента MATLAB обрабатывает variant и variant( точно так же.pointer)
При передаче пустого массива ([]) типа double, MATLAB создает variant( установить в значение pointer)VT_EMPTY. Передача пустого массива любого другого числового типа не поддерживается.
| Аргумент MATLAB | Ближайший тип COM | Разрешенные типы |
|---|---|---|
variant |
VT_VARIANT | VT_VARIANTVT_USERDEFINEDVT_ARRAY |
variant( | VT_VARIANT | VT_VARIANT | VT_BYREF |
Когда COM-метод идентифицирует SAFEARRAY или SAFEARRAY(указатель), эквивалент MATLAB является матрицей.
| Аргумент MATLAB | Ближайший тип COM | Разрешенные типы |
|---|---|---|
SAFEARRAY | VT_SAFEARRAY | VT_SAFEARRAY |
SAFEARRAY(указатель) |
VT_SAFEARRAY | VT_SAFEARRAY | VT_BYREF |
Для передачи VT_DATE введите ввод в программу Visual Basic, используйте класс MATLAB COM.date. Например:
d = COM.date(2005,12,21,15,30,05);
get(d)
Value: 7.3267e+005
String: '12/21/2005 3:30:05 PM'Используйте now для установки Value свойство для номера даты:
d.Value = now;
COM.date принимает те же входные аргументы, что и datenum.
MATLAB не поддерживает эти типы COM.
Строковый массив
Структура
Разреженный массив
Многомерный SAFEARRAYs (больше двух размеров)
Свойства только для записи