On Wed, Aug 23, 2017 at 11:00 AM, Anthony Walter <sys...@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 _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal