[fpc-pascal] Check In Interface Type Helpers
Marcos Douglas B. Santos
md at delfire.net
Wed Aug 23 19:39:37 CEST 2017
On Wed, Aug 23, 2017 at 11:00 AM, Anthony Walter <sysrpl at gmail.com> wrote:
> Marco, it doesn't work that way.
>
> Type helpers simply allow you to extend an existing type with new methods
> and/or properties. When you declare a type helper you extend all instances
> of said type given that:
>
> A) You 'use' the unit declaring the type helper in some other unit.
> B) No other unit you're using also defines a type helper for that same type.
> Only one type helper per type allowed.
>
> As to what they are useful for, consider the following:
>
> type
> // IShellLink is define by Microsoft
> IShellLinkHelper = record helper for IShellLink
> public
> procedure Save(const Target, Description, Link: string);
> end;
>
> procedure IShellLinkHelper.Save(const Target, Description, Link: string);
> var
> P: IPersistsFile;
> begin
> SetPath(Target);
> SetDescription(Description);
> if Self is IPersistsFile then
> begin
> P := Self as IPersistsFile;
> P.Save(Link, True);
> end;
> end;
Wait a minute. Now I realize that procedure IShellLinkHelper.Save is a
real implementation not by a class, but by a "interface helper".
It's like default methods in Java(?) that we have code inside an interface...
Marcos Douglas
More information about the fpc-pascal
mailing list