因为VARIANT是一种变体类型,主要是为了支持OLE自动化操作,是生存期自管理的,即能自动分配和释放所需内存空间

解决方案 »

  1.   

    这是个获得VARIANT类型的函数,VARIANT本身是delphi支持的变体类型。
    function GetVariantType(const v: variant): string; 
    begin 
      case TVarData(v).vType of 
        varEmpty: result := 'Empty'; 
        varNull: result := 'Null'; 
        varSmallInt: result := 'SmallInt'; 
        varInteger: result := 'Integer'; 
        varSingle: result := 'Single'; 
        varDouble: result := 'Double'; 
        varCurrency: result := 'Currency'; 
        varDate: result := 'Date'; 
        varOleStr: result := 'OleStr'; 
        varDispatch: result := 'Dispatch'; 
        varError: result := 'Error'; 
        varBoolean: result := 'Boolean'; 
        varVariant: result := 'Variant'; 
        varUnknown: result := 'Unknown'; 
        varByte: result := 'Byte'; 
        varString: result := 'String'; 
        varTypeMask: result := 'TypeMask'; 
        varArray: result := 'Array'; 
        varByRef: result := 'ByRef'; 
      end; // case 
    end;
      

  2.   

    这是个获得VARIANT类型的函数,VARIANT本身是delphi支持的变体类型。
    function GetVariantType(const v: variant): string; 
    begin 
      case TVarData(v).vType of 
        varEmpty: result := 'Empty'; 
        varNull: result := 'Null'; 
        varSmallInt: result := 'SmallInt'; 
        varInteger: result := 'Integer'; 
        varSingle: result := 'Single'; 
        varDouble: result := 'Double'; 
        varCurrency: result := 'Currency'; 
        varDate: result := 'Date'; 
        varOleStr: result := 'OleStr'; 
        varDispatch: result := 'Dispatch'; 
        varError: result := 'Error'; 
        varBoolean: result := 'Boolean'; 
        varVariant: result := 'Variant'; 
        varUnknown: result := 'Unknown'; 
        varByte: result := 'Byte'; 
        varString: result := 'String'; 
        varTypeMask: result := 'TypeMask'; 
        varArray: result := 'Array'; 
        varByRef: result := 'ByRef'; 
      end; // case 
    end;
      

  3.   

    VARIANT是COM支持的一种类型(通常叫做"变体"),它可以存放8/16/32位有/无符号整数,32/64位浮点数,BSTR(COM字符串,使用UNICODE),COM对象(IUnknown),Automation对象(IDispatch)等所有COM标准类型.
    VARIANT*说明传递的是一个引用,当定义[out]类型的参数(用于传出数据)或[out,retval]COM返回值时必须用引用.
      

  4.   

    Variant和OleVariant类型是用来支持OLE和COM的变体类型。
    其中Variant几乎兼容所有现在已知的数据类型,甚至是一个数据表。
    而OleVariant只兼容它支持的数据类型,对不支持的数据类型,它会自动转换成与它支持的最接近的数据类型。有了这两种类型以后,编程人员就不必担心在不同的平台上因为采用的数据类型不同,而造成应用程序的不兼容。
    也就是说,它提供了简单的跨平台性、跨进程性支持。
      

  5.   

    to  plainsong(轻风) 
    当定义[out]类型的参数(用于传出数据)或[out,retval]COM返回值时必须用引用???
    retval是什么?