MATLAB COM Builder | ![]() ![]() |
Data Conversion Flags
Data conversion flags deal with type conversions of individual array elements. The two data conversion flags, CoerceNumericToType
and InputDateFormat
, govern how numeric and date types are converted from VB to MATLAB. Consider this example:
Sub foo( ) Dim aClass As mycomponent.myclass Dim var1, var2 As Variant Dim y As Variant On Error Goto Handle_Error var1 = 1 var2 = 2# Set aClass = New mycomponent.myclass Call aClass.foo(1,y,var1,var2) Exit Sub Handle_Error: MsgBox(Err.Description) End Sub
This example converts var1
of type Variant/Integer
to an int16
and var2
of type Variant/Double
to a double
. If the original MATLAB function expects double
s for both arguments, this code might cause an error. One solution is to assign a double
to var1
, but this may not be possible or desirable. In such a case set the CoerceNumericToType
flag to mwTypeDouble
, causing the data converter to convert all numeric input to double
. In the previous example, place the following line after creating the class and before calling the methods.
The InputDateFormat
flag controls how the VB Date
type is converted. This example sends the current date and time as an input argument and converts it to a string.
Sub foo( ) Dim aClass As mycomponent.myclass Dim today As Date Dim y As Variant On Error Goto Handle_Error today = Now Set aClass = New mycomponent.myclass aClass. MWFlags.DataConversionFlags.InputDateFormat = mwDateFormatString Call aClass.foo(1,y,today) Exit Sub Handle_Error: MsgBox(Err.Description) End Sub
The next example uses an MWArg
object to modify the conversion flags for one argument in a method call. In this case the first output argument (y1
) is coerced to a Date
, and the second output argument (y2
) uses the current default conversion flags supplied by aClass
.
Sub foo(y1 As Variant, y2 As Variant) Dim aClass As mycomponent.myclass Dim ytemp As MWArg Dim today As Date On Error Goto Handle_Error today = Now Set aClass = New mycomponent.myclass Set y1 = New MWArg y1.MWFlags.DataConversionFlags.OutputAsDate = True Call aClass.foo(2, ytemp, y2, today) y1 = ytemp Exit Sub Handle_Error: MsgBox(Err.Description) End Sub
![]() | Array Formatting Flags | Usage Examples | ![]() |