On Sat, Apr 14, 2012 at 4:23 AM, Frank Church <vfcli...@gmail.com> wrote: > On 10 April 2012 19:08, Marcos Douglas <m...@delfire.net> wrote: >> On Tue, Apr 10, 2012 at 12:49 PM, Frank Church <vfcli...@gmail.com> wrote: >>> On 10 April 2012 12:28, Marcos Douglas <m...@delfire.net> wrote: >>>> On Tue, Apr 10, 2012 at 1:07 AM, Frank Church <vfcli...@gmail.com> wrote: >>>>> When I need a variation in procedures (standalone, not a class or >>>>> object procedure) I use across my applications, I often find it more >>>>> convenient to create a copy the unit into the project folder and make >>>>> the changes there. Sometimes they get merged back into the shared unit >>>>> or not at all. >>>>> >>>>> I am thinking now of using classes with procedures, without any data >>>>> in them, so that I subclass them in the projects where I need to >>>>> change them. Are the some good examples and some known good working >>>>> practices on working with procedures in this way? >>>> >>>> I do this. Sometimes I prefer encapsulate subroutines (LCL, RTL, 3rd >>>> etc) in static classes. >>>> >>>> TmyFoo = class >>>> public >>>> class procedure Exec; static; >>>> end; >>>> >>> >>> Do you have some examples to show how it is done? >>> >>> Are there some examples in the FCL/LCL etc >> >> In FCL/LCL I don't know if exists. >> >> My example: >> >> type >> TMsg = class >> public >> class procedure Info(const ATxt: string); static; >> end; >> >> implementation >> >> class procedure TMsg.Info(const ATxt: string); >> begin >> ShowMessage(ATxt); >> end; >> >> ------------------------ >> Using: >> >> begin >> TMsg.Info; >> end; >> > > I see that you declare your procedure as static. Is that the way they > should be or is that your own preference? > Is it possible to make them virtual and override them or replace them > in descendant classes?
Static methods do not have Self implicit parameter. They are like normal procedure/function. Without 'static' works too, but the assembler generated gets better with static. To override you should leave out the 'static' to use 'virtual'. Marcos Douglas -- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus