程序在Vb下调用可以通过,其中obj为全局COM对象
Dim buffer() As Byte
Dim rrbuffer(100) As Byte
Dim rlen As Long
Dim ii As Longbuffer = "test"
report = ""
Obj.testfun(12, buffer, 30, rrbuffer, rlen)
testfun对应的参数为,in integer,in OleVariant,out OleVariant, out integer但在delphi中我使用相同方法却老是报类型错误,请各位达人帮我解决,delphi代码如下
var
  OutInfos: OleVariant;//发送内容
  strsend : OLEVARIANT;//发送字符串
  sendLen: Longint;//接收内容
  OutLen: Longint;//接收长度
begin
  sendlen := 26;
  strsend := VarArrayCreate([low(sendinfo),high(sendinfo)],varByte);
  strsend[1] := 5;
  strsend[2] := 64;
  strsend[3] := 1;
  strsend[4] := 79;
  strsend[5] := 78;
  strsend[6] := 13; 
  obj.testfun(25,sendinfo,sendlen,outinfos,OutLen);
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
end;
这句运行时报错“类型错误”,该如何写?

解决方案 »

  1.   

    OutLen: Longint
    声明成olevariant
      

  2.   

    全部声明成OLEVARIANT试试,或者VARIANT
      

  3.   

    不行,outlen的类型必须为longint或integer不然连编译都通不过,到底strsend的类型要定义成什么类型?不管我定义成什么样子,老实是报"类型不匹配"
      

  4.   

    testfun函数定义如下
    HRESULT TestFun([in] long handle,
                    [in] VARINAT strInParam,
                    [in] long iInParamLen,
                    [out] VARINAT* strOutParam,
                    [out] long* piOutParamLen,
                    [out,retval] VARIANT_BOOL *pbResultVal);