[fpc-pascal] casting interfaces and objects

Marc Santhoff M.Santhoff at t-online.de
Mon May 19 00:02:55 CEST 2008


Am Sonntag, den 18.05.2008, 23:41 +0200 schrieb Graeme Geldenhuys:
> 2008/5/18 Marc Santhoff <M.Santhoff at t-online.de>:
> > 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.

However, before something goes into production I'll put up some tests
for the cases in question.

Thanks again, to Marco too,
Marc





More information about the fpc-pascal mailing list