If you need to know if an instance implement certain interface, you can use is operator<div id="yMail_cursorElementTracker_1576890939564"><br></div><div id="yMail_cursorElementTracker_1576890939697">if anInstance is IInterface1 then</div><div id="yMail_cursorElementTracker_1576890975666">begin</div><div id="yMail_cursorElementTracker_1576890993164">     </div><div id="yMail_cursorElementTracker_1576890984305">end;<br id="yMail_cursorElementTracker_1576890737416"><br><div id="ymail_android_signature">Zamrony P. Juhara</div> <br> <blockquote style="margin: 0 0 20px 0;"> <div style="font-family:Roboto, sans-serif; color:#6D00F6;"> <div>On Sat, Dec 21, 2019 at 0:25, Adriaan van Os</div><div><fpc@microbizz.nl> wrote:</div> </div> <div style="padding: 10px 0 0 20px; margin: 10px 0 0 0; border-left: 1px solid #6D00F6;"> <div dir="ltr"><br></div><div dir="ltr">I would like to pass a CORBA interface-type as parameter and test for equality, So, for example, I have<br></div><div dir="ltr"><br></div><div dir="ltr">{$mode objfpc}<br></div><div dir="ltr">{$interfaces corba}<br></div><div dir="ltr"><br></div><div dir="ltr">type<br></div><div dir="ltr">    IMyInterface = Interface<br></div><div dir="ltr">    <br></div><div dir="ltr">        [  '{34aad6d0-5884-4143-97c2-b6e330305ae3}']<br></div><div dir="ltr"><br></div><div dir="ltr">        Function MyFunc : Integer;<br></div><div dir="ltr">    end;<br></div><div dir="ltr"><br></div><div dir="ltr">Now I can pass IMyInterface to TObject.GetInterface as the first parameter, which is of type TGuid <br></div><div dir="ltr">in the declaration.<br></div><div dir="ltr"><br></div><div dir="ltr">However, if I use the same TGuid parameter type in my own procedure<br></div><div dir="ltr"><br></div><div dir="ltr">    procedure TestInterfaceParameter<br></div><div dir="ltr">          ( const theInterface            : TGuid);<br></div><div dir="ltr">        begin<br></div><div dir="ltr">          if IsEqualGUID<br></div><div dir="ltr">           ( theInterface, ITestInterface1)<br></div><div dir="ltr">            then writeln<br></div><div dir="ltr">               ( 'theInterface = ITestInterface1')<br></div><div dir="ltr">        end;<br></div><div dir="ltr"><br></div><div dir="ltr">then I run into the problem that IMyInterface is accepted as actual parameter of <br></div><div dir="ltr">TestInterfaceParameter and of IsEqualGUID only if IMyInterface inherits from IUnknown (which I <br></div><div dir="ltr">certainly don't want, as it is reference counted). Strangely, TObject.GetInterface does accept <br></div><div dir="ltr">IMyInterface as a parameter. So where is the difference ? Is there some compiler magic involved in <br></div><div dir="ltr">TObject.GetInterface ?<br></div><div dir="ltr"><br></div><div dir="ltr">Regards,<br></div><div dir="ltr"><br></div><div dir="ltr">Adriaan van Os<br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr">_______________________________________________<br></div><div dir="ltr">fpc-pascal maillist  -  <a ymailto="mailto:fpc-pascal@lists.freepascal.org" href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a><br></div><div dir="ltr"><a href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal" target="_blank">https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a><br></div> </div> </blockquote></div>