If you need to know if an instance implement certain interface, you can use is operator if anInstance is IInterface1 thenbegin end;
Zamrony P. Juhara On Sat, Dec 21, 2019 at 0:25, Adriaan van Os<f...@microbizz.nl> wrote: 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
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal