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

Reply via email to