Browse Source

* Fixed declaration of ITypeInfo.Invoke(). The last 3 parameters should be able accept nil values. This fixes calling late binding methods of ActiveX server implemented with FPC. Patch by Ludo Brands.

git-svn-id: trunk@22638 -
yury 13 years ago
parent
commit
b0b2353f58
2 changed files with 3 additions and 3 deletions
  1. 1 1
      packages/winunits-base/src/activex.pp
  2. 2 2
      packages/winunits-base/src/comobj.pp

+ 1 - 1
packages/winunits-base/src/activex.pp

@@ -3006,7 +3006,7 @@ TYPE
       Function  LocalGetIDsOfNames():HResult;StdCall;
      {$endif}
      {$ifndef Call_as}
-     Function  Invoke(pvInstance: Pointer; memid: MEMBERID; wFlags: WORD; VAR pDispParams: DISPPARAMS; OUT pVarResult: VARIANT; OUT pExcepInfo: EXCEPINFO; OUT puArgErr: UINT):HResult;StdCall;
+     Function  Invoke(pvInstance: Pointer; memid: MEMBERID; wFlags: WORD; VAR pDispParams: DISPPARAMS; pVarResult: PVARIANT; pExcepInfo: PEXCEPINFO; puArgErr: PUINT):HResult;StdCall;
      {$else}
      Function  LocalInvoke ():HResult;StdCall;
      {$endif}

+ 2 - 2
packages/winunits-base/src/comobj.pp

@@ -1599,7 +1599,7 @@ HKCR
         else
       //  Function  Invoke(pvInstance: Pointer; memid: MEMBERID; wFlags: WORD; VAR pDispParams: DISPPARAMS; OUT pVarResult: VARIANT; OUT pExcepInfo: EXCEPINFO; OUT puArgErr: UINT):HResult;StdCall;
       //  Result := fTypeInfo.Invoke(IDispatch(Self), DispID, Flags, TDispParams(params), PVariant(VarResult)^, PExcepInfo(ExcepInfo)^, PUINT(ArgErr)^);
-          Result := fTypeInfo.Invoke(fInterfacePointer, DispID, Flags, TDispParams(params), PVariant(VarResult)^, PExcepInfo(ExcepInfo)^, PUINT(ArgErr)^);
+          Result := fTypeInfo.Invoke(fInterfacePointer, DispID, Flags, TDispParams(params), VarResult, ExcepInfo, ArgErr);
       end;
 
     function TAutoIntfObject.InterfaceSupportsErrorInfo(const riid: TIID): HResult;
@@ -1699,7 +1699,7 @@ HKCR
         begin
           Result := TAutoObjectFactory(Factory).DispTypeInfo.Invoke(Pointer(
             PtrUint(Self) + TAutoObjectFactory(Factory).DispIntfEntry^.IOffset),
-            DispID, Flags, TDispParams(Params), PVariant(VarResult)^, PExcepInfo(ExcepInfo)^, PUINT(ArgErr)^);
+            DispID, Flags, TDispParams(Params), VarResult, ExcepInfo, ArgErr);
         end;
       end;