Value

 (Available in 01 TS COM - TS_COM_VariantArg)

Purpose

Get the variant usual value

Syntax

uValue:=oVariantArg:Value

Description

Get the variant usual value

Returns

USUAL

Example

METHOD GetSample( ) AS TS_IFPTemplate PASCAL CLASS SomeClass
LOCAL oIFPTemplate AS TS_IFPTemplate
LOCAL pVariantArg AS _WinVARIANTARG
LOCAL oATemplate AS TS_AbstractIDispatch
LOCAL oIFPSample AS TS_IFPSample
LOCAL oIFPFtrEx AS TS_IFPFtrEx
LOCAL oTemplate AS TS_VariantArg
LOCAL dwQuality AS DWORD
LOCAL oQuality AS TS_VariantArg
LOCAL oBlob AS TS_VariantArg
LOCAL aBlob AS ARRAY
   TSTrace Enter
// Read a file into an array of numerics
   aBlob:=ReadBlob( "C:\Smp_Template.FPT" )
// Create a 'TS_VariantArg'
   oBlob:=TS_VariantArg{ }
// Convert the 'aBlob' array to a safearray of 'VT_UI1(Byte)'
   oBlob:[ Value, _OR( VT_ARRAY, VT_UI1 ) ]:=aBlob
// Create a 'TS_IFPSample'
   oIFPSample:=TS_IFPSample{ }
// Import the safearray of 'VT_UI1(Byte)'
   oIFPSample:CMImport( oBlob )
// Prepare the first parameter for 'oIFPFtrEx:CMProcess()'
   oTemplate:=TS_VariantArg{ NIL, NIL, TS_USUAL2VARIANT_MAKE_NORMAL }
   pVariantArg:=oTemplate:VariantArg
   pVariantArg.vt:=_OR( VT_BYREF, VT_DISPATCH )
   pVariantArg.uVariant.byref:=@oATemplate
// Prepare the second parameter for 'oIFPFtrEx:CMProcess()'
   oQuality:=TS_VariantArg{ NIL, NIL, TS_USUAL2VARIANT_MAKE_NORMAL }
   pVariantArg:=oQuality:VariantArg
   pVariantArg.vt:=_OR( VT_BYREF, VT_I4 )
   pVariantArg.uVariant.byref:=@dwQuality
// Create a 'TS_IFPFtrEx'
   oIFPFtrEx:=TS_IFPFtrEx{ }
   oIFPFtrEx:CMProcess( oIFPSample, Tt_Verification, oTemplate, oQuality  ; ...
  ... )
// Create a 'TS_IFPTemplate' from 'oATemplate'
   oIFPTemplate:=TS_IFPTemplate{ NIL, oATemplate, NIL }
// Release 'oATemplate'
   oATemplate:Release( )
   oATemplate:=NULL_OBJECT
   TSTrace Leave
RETURN oIFPTemplate

Source

ACCESS Value AS USUAL PASCAL CLASS TS_VariantArg
LOCAL uValue AS USUAL
   TSTrace Enter
   DO CASE
   CASE SELF:_WinVariantArgTop<>NULL_PTR
      DO CASE
      CASE SELF:_TYPEOF==TS_USUAL2VARIANT_MAKE_VARIANT
         uValue:=TS_Variant2Usual( SELF:Owner, NULL_SYMBOL, SELF:_WinVariantArgTop ; ...
        ... , SELF:DateTimeAsDate )
      CASE SELF:_TYPEOF==TS_USUAL2VARIANT_MAKE_BYREF
         TSTrace ToDo NB "Needs testing"
         uValue:=TS_Variant2Usual( SELF:Owner, NULL_SYMBOL, SELF:_WinVariantArgTop ; ...
        ... , SELF:DateTimeAsDate )
      OTHERWISE
         TSTrace Warning "SELF:_Type<>TS_USUAL2VARIANT_MAKE_VARIANT .AND. SELF:_Type<>TS_USUAL2VARIANT_MAKE_BYREF"
         uValue:=NIL
      END
   CASE SELF:_WinVariantArgBot<>NULL_PTR
      uValue:=TS_Variant2Usual( SELF:Owner, NULL_SYMBOL, SELF:_WinVariantArgBot ; ...
     ... , SELF:DateTimeAsDate )
   OTHERWISE
      TSTrace Warning "SELF:_WinVariantArgTop==NULL_PTR .AND. SELF:_WinVariantArgBot==NULL_PTR"
      uValue:=NIL
   END
   TSTrace Leave
RETURN uValue