On 24 July 2012 15:13, Ryan Joseph <r...@thealchemistguild.com> wrote:
> procedure InvokeDelegate (delegate: TObject);
> var
>         intfDelegate: IMyInterface;
> begin
>         ERROR ====> intfDelegate := IMyInterface(delegate);
>         intfDelegate.DoThis(1);
> end;


You could also try the Supports() method. eg:

   if Supports(delegate, IMyInterface, intfDelegate) then
     intfDelegate.DoThis(1);

>
> {$mode delphi}
> {$interfaces corba}
>
> program Main;
> uses
>         MyInterface;
>
> type
>         TMyDelegate = class (TInterfacedObject, IMyDelegate)
>                 procedure DoThis (value: integer);
>         end;


By the way, as far as I know TInterfacedObject is a COM Interface
class only. You are telling the compiler that you want to use CORBA
style interfaces, which don't support IUnknown, thus you shouldn't
(can't) use TInterfaceObject which implements IUnknown.

Change that class definition to something like the following if you
are using CORBA interfaces.

   TMyDelegate = class(TObject, MyDelegate)
      ...
   end;

And that should work correctly with CORBA style interfaces (which
don't have reference counting built-in).


-- 
Regards,
  - Graeme -


_______________________________________________
fpGUI - a cross-platform Free Pascal GUI toolkit
http://fpgui.sourceforge.net
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to