I would like to pass a CORBA interface-type as parameter and test for equality, 
So, for example, I have

{$mode objfpc}
{$interfaces corba}

type
        IMyInterface = Interface
        
                [  '{34aad6d0-5884-4143-97c2-b6e330305ae3}']

                Function MyFunc : Integer;
        end;

Now I can pass IMyInterface to TObject.GetInterface as the first parameter, which is of type TGuid in the declaration.

However, if I use the same TGuid parameter type in my own procedure

        procedure TestInterfaceParameter
              ( const theInterface            : TGuid);
            begin
              if IsEqualGUID
               ( theInterface, ITestInterface1)
                then writeln
                   ( 'theInterface = ITestInterface1')
            end;

then I run into the problem that IMyInterface is accepted as actual parameter of TestInterfaceParameter and of IsEqualGUID only if IMyInterface inherits from IUnknown (which I certainly don't want, as it is reference counted). Strangely, TObject.GetInterface does accept IMyInterface as a parameter. So where is the difference ? Is there some compiler magic involved in TObject.GetInterface ?

Regards,

Adriaan van Os




_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to