Re: [fpc-pascal] Helpers: Implementation Location influencing the result
On 06.10.2013 01:46, Daniel Gaspary wrote: On Sat, Oct 5, 2013 at 8:27 PM, Sven Barth pascaldra...@googlemail.com wrote: At location A the helper is not yet declared, thus GetAnotherString uses the GetString function of its own class. On location B the helper is already declared and thus the implementation of GetAnotherString will pick up the helper's GetString function instead. I believed that the location that matters, in this case, was only the object instantiation (program/implementation body), because it was, in both cases, after the helper declaration. A little weird. No. Whenever you call a method (either inside a class using (implicit) Self or outside using a variable) the compiler checks whether a helper for that type is in scope and uses that if it is. It has nothing to do with object instantiation (that would be more for Traits/Mixins: http://en.wikipedia.org/wiki/Trait_%28computer_programming%29 ). Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Helpers: Implementation Location influencing the result
On Sun, Oct 6, 2013 at 8:09 AM, Sven Barth pascaldra...@googlemail.com wrote: No. Whenever you call a method (either inside a class using (implicit) Self or outside using a variable) the compiler checks whether a helper for that type is in scope and uses that if it is. It has nothing to do with object instantiation (that would be more for Traits/Mixins: http://en.wikipedia.org/wiki/Trait_%28computer_programming%29 ). Thank you, Sven. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
[fpc-pascal] Helpers: Implementation Location influencing the result
I have created an example to show the different results I got due to where the implementation of a object is . The code is at http://pastebin.com/wY2qmZFm If you cut and paste the code block at Location A to the Location B the result of the program changes. At Location A the method of the helper is used. At Location B it is not. My questions are Is this right? Why? Thank you. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Helpers: Implementation Location influencing the result
Am 05.10.2013 22:57 schrieb Daniel Gaspary dgasp...@gmail.com: I have created an example to show the different results I got due to where the implementation of a object is . The code is at http://pastebin.com/wY2qmZFm If you cut and paste the code block at Location A to the Location B the result of the program changes. At Location A the method of the helper is used. At Location B it is not. My questions are Is this right? Yes. Why? At location A the helper is not yet declared, thus GetAnotherString uses the GetString function of its own class. On location B the helper is already declared and thus the implementation of GetAnotherString will pick up the helper's GetString function instead. As normally helpers aren't declared in the same unit as their extended type this isn't necessarily that obvious. ;) Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Helpers: Implementation Location influencing the result
On Sat, Oct 5, 2013 at 8:27 PM, Sven Barth pascaldra...@googlemail.com wrote: At location A the helper is not yet declared, thus GetAnotherString uses the GetString function of its own class. On location B the helper is already declared and thus the implementation of GetAnotherString will pick up the helper's GetString function instead. I believed that the location that matters, in this case, was only the object instantiation (program/implementation body), because it was, in both cases, after the helper declaration. A little weird. Thanks, Sven. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal