这是个获得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;
这是个获得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;
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;
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;
VARIANT*说明传递的是一个引用,当定义[out]类型的参数(用于传出数据)或[out,retval]COM返回值时必须用引用.
其中Variant几乎兼容所有现在已知的数据类型,甚至是一个数据表。
而OleVariant只兼容它支持的数据类型,对不支持的数据类型,它会自动转换成与它支持的最接近的数据类型。有了这两种类型以后,编程人员就不必担心在不同的平台上因为采用的数据类型不同,而造成应用程序的不兼容。
也就是说,它提供了简单的跨平台性、跨进程性支持。
当定义[out]类型的参数(用于传出数据)或[out,retval]COM返回值时必须用引用???
retval是什么?