<p>Am 15.04.2016 10:46 schrieb "Tony Whyman" <<a href="mailto:tony.whyman@mccallumwhyman.com">tony.whyman@mccallumwhyman.com</a>>:<br>
><br>
> Ryan,<br>
><br>
> If you want to get rid of (ugly) typecasts then maybe you should investigate the "absolute" keyword. You get a lot of examples in the LCL. For example, here's one I chose at random:<br>
><br>
> function TGtk2WidgetSet.RawImage_CreateBitmaps(const ARawImage: TRawImage; out<br>
>   ABitmap, AMask: HBitmap; ASkipMask: boolean): boolean;<br>
> var<br>
>   GdiObject: PGDIObject absolute ABitmap;<br>
>   GdiMaskObject: PGDIObject absolute AMask;<br>
>   Desc: TRawImageDescription absolute ARawImage.Description;<br>
> ....<br>
><br>
><br>
> You could describe it as typecast done in the var clause of a method. The right hand identifier is not restricted to function parameters.</p>
<p>While it works using "absolute" for a public API is rather unsafe (I'd only use that in private methods). In those cases the "as" operator should he used (or at least "is" plus returning an error).</p>
<p>Regards,<br>
Sven</p>