EOleException 必须加载一个dll
而我在程序中调用其它的方法却没有问题,同样的appserver,
郁闷那,
该方法用到一个variant*的in,out参数,一个variant*的out参数,两个int的in参数
一个bstr的in参数,定义如下
procedure Tpsrdm.niLAddHousePlus(var vData: OleVariant; out ok: OleVariant;
  projectid: SYSINT; const Worker: WideString; roomKind: SYSINT);

解决方案 »

  1.   

    好象是这个问题,我的vData参数输入的是一个VarArrayCreate的一个varVariant的数组,,因为exception是在Client端raise的,会不会是这个问题:
      调用远程方法不能传入VarArray类型的Variant,可是我声明的是OleVariant阿
      

  2.   

    给出代码如下
    procedure TfrmAddHousePlus.BeginAddHouse;
    var
      vData: OleVariant;
    begin
      vData := OleVariant(VarArrayCreate([0, 11], varvariant));
      vData[0] := memoBuilderno.Lines.Text;
      vData[1] := memounitno.Lines.Text;
      vData[2] := memofloorno.Lines.Text;
      vData[3] := memoroomno.Lines.Text;
      vData[4] := StrTofloat(edinnerarea.Text);
      vData[5] := StrTofloat(edOtherarea.Text);
      vData[6] := StrTofloat(edPrice.Text);
      vData[7] := cbxUse.Text;
      vData[8] := cbxFace.Text;
      vData[9] := cbxStruct.Text;
      vData[10] := cbxroomtype.Text;
      vData[11] := memo5.Lines.Text;  dm13.mainConn.AppServer.niLAddHousePlus(vData, sysSession.CurProjectId,
        sysSession.worker, rgrproomKind.ItemIndex);
    就是这句报错
      

  3.   

    没见过,不过你能不能把
    procedure Tpsrdm.niLAddHousePlus(var vData: OleVariant; out ok: OleVariant;
      projectid: SYSINT; const Worker: WideString; roomKind: SYSINT);
    中的sysint改成integer?也就是在类型库编辑器里把类型改成long.(我从来没用过sysint)你的函数有五个参数,但你调用的时候只传了四个?
      

  4.   

    问题解决了,但是真正的原因是--------我的server方法写的有exception出现.
    这是阴沟翻船,谢谢楼上各位兄弟,结贴