[fpc-pascal] Why casting interface as Tobject will result in a different reference?
Sven Barth
pascaldragon at googlemail.com
Sat May 27 21:39:14 CEST 2017
2017-05-27 18:10 GMT+02:00 Dennis Poon <dennis at avidsoft.com.hk>:
>
>
> 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 ) ?
Would you please provide a full, yet simple as possible example that
shows this? I can't reproduce it with merely code fragments as for me
it works.
Regards,
Sven
More information about the fpc-pascal
mailing list