On Tue, Dec 4, 2012 at 4:53 PM, Sven Barth <pascaldra...@googlemail.com> wrote:
> On 04.12.2012 20:03, Marcos Douglas wrote:
>>
>> Hi,
>>
>> See the code below.
>> My question is: Why the cast worked, considering the c variable is a
>> TAClass instance, not a TBClass.
>
>
> As long as you don't access fields of TBClass inside of GetInfoA you won't
> run into problems, because FInfoA is accessed using an offset. If you want
> to catch such problems you should compile with "-CR". The output will then
> look like the following:
>
> === output begin ===
>
> An unhandled exception occurred at $080482E8 :
> EInvalidCast : Invalid type cast
>   $080482E8
>
> === output end ===
>
> As a sidenote: as long as you don't access an object member at all you'd
> even be able to cast a primitive type like Integer to an object and call
> methods on it... (not that I'd suggest to do this... ;) )
>
> Regards,
> Sven

Excellent explanation, thank you.

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

Reply via email to