Marc Santhoff wrote:
Am Sonntag, den 18.05.2008, 23:41 +0200 schrieb Graeme Geldenhuys:
2008/5/18 Marc Santhoff <[EMAIL PROTECTED]>:
Since the compiler dod not warn about using the "as" operator I assume
it is safe? Like this:

procedure TObservable.DeRegister( obsv: IObserver );
var
       i: integer;
begin
       if (fObservers.count<=0) then exit;
       for i:=0 to fObservers.count-1 do begin
               if ((fObservers[i] as IObserver)=obsv) then begin

I'm not a big Interfaces expert, but as for as I know using 'as' like
that with Interfaces actually translates to a QueryInterface() call
internally, which is why it is allowed.  I vaguely remember as issue
between CORBA and COM interfaces and the 'as' call, because CORBA
interfaces do not have a QueryInterface() implementation. Well,
something like that... :-)

Okay, so there are still some unknowns.

CORBA interfaces do not include the following methods. These are only relevant to COM interfaces.

function QueryInterface(const iid: tguid; out obj): longint; stdcall;
function _AddRef: longint; stdcall;
function _Release: longint; stdcall;


Everybody I know uses COM interfaces, except for one developers - Martin from MSEgui project. FPC defaults to COM style interfaces as well.

Regards,
  - Graeme -


_______________________________________________________
fpGUI - a cross-platform GUI toolkit using Free Pascal
http://opensoft.homeip.net/fpgui/


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to