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