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);
而我在程序中调用其它的方法却没有问题,同样的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);
调用远程方法不能传入VarArray类型的Variant,可是我声明的是OleVariant阿
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);
就是这句报错
procedure Tpsrdm.niLAddHousePlus(var vData: OleVariant; out ok: OleVariant;
projectid: SYSINT; const Worker: WideString; roomKind: SYSINT);
中的sysint改成integer?也就是在类型库编辑器里把类型改成long.(我从来没用过sysint)你的函数有五个参数,但你调用的时候只传了四个?
这是阴沟翻船,谢谢楼上各位兄弟,结贴