[fpc-pascal] Passing a CORBA interface as parameter

Adriaan van Os fpc at microbizz.nl
Sat Dec 21 16:12:27 CET 2019


Sven Barth via fpc-pascal wrote:
> 
> The important difference in this regard between COM and CORBA interfaces 
> is that for CORBA interfaces the "guid" is a ShortString, not a TGUID. 
> Thus the compiler allows to convert a CORBA interface to a ShortString. 
> For TObject.GetInterface this works, because it has a overload for 
> ShortString. ;) (this is document here: 
> https://www.freepascal.org/docs-html/current/ref/refse47.html#x100-1220007.6 

Thanks, I hadn't seen that. Yes, this solves the problem. And this clarifies that the CORBA 
interface-identifying string doesn't need to be in GUID form, it can be something as simple as [ 
'IMyInterface' ].

I will note that the interface-identifier comparison below (in procedure TestInterfaceParameter) 
doesn't work without the explicit typecast from interface-identifier to "shortstring". Apparently, 
that typecast is implicit when passing an interface-identifier as actual parameter to a 
"shortstring" formal parameter.

type
     InterfaceType                           = string[ 255];

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

begin
   TestInterfaceParameter
     ( ITestInterface1)
end.

Regards,

Adriaan van Os



More information about the fpc-pascal mailing list