<p>Am 23.08.2017 16:01 schrieb "Anthony Walter" <<a href="mailto:sysrpl@gmail.com">sysrpl@gmail.com</a>>:<br>
 ><br>
> As to what they are useful for, consider the following:<br>
><br>
> type<br>
>   // IShellLink is define by Microsoft<br>
>   IShellLinkHelper = record helper for IShellLink<br>
>   public<br>
>     procedure Save(const Target, Description, Link: string);<br>
>   end;<br>
><br>
> procedure IShellLinkHelper.Save(const Target, Description, Link: string);<br>
> var<br>
>   P: IPersistsFile;<br>
> begin<br>
>   SetPath(Target); <br>
>   SetDescription(Description);<br>
>   if Self is IPersistsFile then<br>
>   begin<br>
>     P := Self as IPersistsFile;<br>
>     P.Save(Link, True);<br>
>   end;<br>
> end;<br>
></p>
<p>And I just noticed: it's "type helper" if you want to extend an interface, not "record helper" ;)</p>
<p>Regards,<br>
Sven</p>