On 24 Jan 2014, at 22:20, waldo kitty wrote:

> On 1/24/2014 3:18 PM, Ewald wrote:
>> 
>> On 24 Jan 2014, at 21:20, waldo kitty wrote:
>> 
>>> On 1/23/2014 2:18 PM, waldo kitty wrote:
>>> 
>>> following up on this, how do i pass parameters to doThis and doThat?? do i
>>> have to use an intermediate pre_doThis and pre_doThat which handles the 
>>> calls
>>> from centralControl and then calls doThis and doThat with the necessary 
>>> parameters?
>>> 
>> 
>> Simply change the type:
>>      Type
>>              TProc = Procedure(aRecord: somerec);
>> 
>> Then you can call whichProc (in centralControl) with your argument of choice.
> 
> ahhh! that helps to explain what the compiler error was that i was seeing... 
> so i may need two different types if each procedure called from 
> centralControl has different parameters?

Basically yes (if you mean different parameter types/ different parameter order 
-- the name in the procedure/function type is merely descriptive AFAIK). But if 
you have many procedures, I'd go for a class:

TCentralControl = Class
Protected
        Procedure Callback1; virtual; abstract;
        Procedure Callback2(value: TSomeRec); virtual; abstract;
        Function Callback3: Boolean; virtual abstract;
        ... and so on ...       

Public
        Procedure CentralControl(.....);
End;

Then simply inherit from this class a few times for the different scenario's 
you want to cover.


> won't that cause a conflict if the parameters are not the same or are in 
> different ordering or even if some procedure doesn't have parameters at all?


Yes, you would need a lot of parameters if you need a lot of callbacks. if this 
is the case go for the OOP approach; it is perfectly suited for this kind of 
thing.

--
Ewald

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to