Convert2Variant

 (Available in 01 TS COM - TS_COM_VariantArg)

Source

METHOD Convert2Variant( ) AS LOGIC PASCAL CLASS TS_VariantArg
LOCAL pstruWinVariantArgBot AS _WinVARIANTARG
LOCAL pstruWinVariantArgTop AS _WinVARIANTARG
LOCAL lRetVal AS LOGIC
   TSTrace Enter
   DO CASE
   CASE SELF:_TYPEOF==TS_USUAL2VARIANT_MAKE_VARIANT
      lRetVal:=TRUE
   CASE SELF:_TYPEOF<>TS_USUAL2VARIANT_MAKE_NORMAL
      IF SELF:Convert2Normal( )
         IF SELF:Convert2Variant( )
            lRetVal:=TRUE
         ELSE
            TSTrace Warning "!SELF:Convert2Variant()"
            lRetVal:=FALSE
         END
      ELSE
         TSTrace Warning "!SELF:Convert2Normal()"
         lRetVal:=FALSE
      END
   CASE SELF:_WinVariantArgBot==NULL_PTR
      TSTrace Warning "SELF:_WinVariantArgBot==NULL_PTR"
      lRetVal:=FALSE
   CASE SELF:_WinVariantArgTop<>NULL_PTR .OR. SELF:_TYPEOF ; ...
  ... <>TS_USUAL2VARIANT_MAKE_NORMAL
      TSTrace Warning "SELF:_WinVariantArgTop<>NULL_PTR .OR. SELF:_Type<>TS_USUAL2VARIANT_MAKE_NORMAL"
      lRetVal:=FALSE
   OTHERWISE
      pstruWinVariantArgTop:=SELF:_WinVariantArgBot
      pstruWinVariantArgBot:=MemAlloc( _SIZEOF( _WinVARIANTARG ) )
      IF pstruWinVariantArgBot==NULL_PTR
         TSTrace Fatal "pstruWinVariantArgBot:=MemAlloc(_SizeOf(_WinVARIANTARG))==NULL_PTR"
         lRetVal:=FALSE
      ELSE
         VariantInit( pstruWinVariantArgBot )
         pstruWinVariantArgBot.vt:=_OR( SHORT( _CAST, VT_BYREF ), VT_VARIANT  ; ...
        ... )
         pstruWinVariantArgBot.uVariant.byref:=pstruWinVariantArgTop
         SELF:_WinVariantArgBot:=pstruWinVariantArgBot
         SELF:_WinVariantArgTop:=pstruWinVariantArgTop
         SELF:_TYPEOF:=TS_USUAL2VARIANT_MAKE_VARIANT
         lRetVal:=TRUE
      END
   END
   TSTrace Leave
RETURN lRetVal