版主别删 Delphi 调用COM 传递OleVariant参数,提示类型不匹配!!
用Delphi 调用一个COM组件,引入类型库后,调用其中一个GetBuffer方法,该方法存在一个OleVariant参数,运行时总提示类型不匹配。
代码:
var
Cim:Variant;
V:Variant;
begin
Cim := CreateOleObject('CimioX.Cimio');
V:= VarArrayCreate([0,100],varByte);
Cim.GetBuffer(V,100);//此处编译通过,运行提示“类型不匹配”
end;
导入的类型库的定义如下:
// *********************************************************************//
// DispIntf: _CimioDisp
// Flags: (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID: {97E11287-9BB3-11D3-9116-00C04FA15BDB}
// *********************************************************************//
_CimioDisp = dispinterface
['{97E11287-9BB3-11D3-9116-00C04FA15BDB}']
property EnableErrEvents: WordBool dispid 1745027095;
property PassThruMode: WordBool dispid 1745027094;
property ErrDescription: WideString readonly dispid 1745027092;
property CimType: ePassThru readonly dispid 1745027091;
procedure SendAWrd(WordOut: Smallint; usDelay: Integer); dispid 1610809388;
function SendWrd(WordOut: Smallint; var WordIn: Smallint; Attempts: Byte): WordBool; dispid 1610809369;
function ClearFIFO: WordBool; dispid 1610809370;
function StartReceiveBuffer(WordOut: Smallint; GenEvent: WordBool; TimeOut: Smallint): WordBool; dispid 1610809371;
function GetBuffer(var Buffer: {??PSafeArray}OleVariant; TimeOut: Smallint): Integer; dispid 1610809374;
function SendBuffer(var Buffer: {??PSafeArray}OleVariant; usDelay: Integer): WordBool; dispid 1610809375;