[fpc-pascal] Why casting interface as Tobject will result in a different reference?
Dennis Poon
dennis at avidsoft.com.hk
Sat May 27 18:10:58 CEST 2017
Sven Barth via fpc-pascal wrote:
> The idea itself is valid, cause "(IMyInterfaceVar as TObject) as
> IMyInterface = IMyInterfaceVar" is true if and only if IMyInterface is
> a COM interface. If IMyInterface really is a CORBA interface as Dennis
> wrote then the compiler should already have complained at the "aObj :=
> aInt as TObject" line as this type of conversion is*not* supported by
> CORBA interfaces (cause they don't provide QueryInterface() which is
> needed for this). At least for me the compiler*did* complain (both
> 3.0.2 and 3.1.1) when I tested this.
> So the question is: is IMyInterface indeed a CORBA interface? If so
> then why does the compiler not complain? If not then why doesn't it
> work? For both cases a full example would be needed to investigate
> this.
>
> Regards,
> Sven
Sorry, I got it wrong. The interface was in fact COM style instead of CORBA.
In case of COM interface, why
var
aInt : IMyInterface;
aObj : TObject;
begin
....
....
...
aInt := MyList.Items[0];
aObj := aInt as TObject;
why sometimes (not always) aInt <> (aObj as IMyInterface ) ?
Dennis
More information about the fpc-pascal
mailing list