Yo lo uso de la siguiente manera:
Código:
//Por ejemplo para implementar una unidad con funciones matemáticas útiles:
unit MTools;
interface
type tfx=function(x:real):real;
function dfx(fx:tfx;x:real;h:real):real;
...
implementation
//funcion que calcula la derivada de fx respecto a x
function dfx(fx:tfx;x:real;h:real):real;
....
end;
//---------------------------------------------------------------------------------
//En el programa principal puedo hacer uso de la unidad de la siguiente manera:
//Defino mi función (A,B,C son constantes previamente definidas):
uses MTools;
function U1(x:real):real;
begin
Result:=A*x*x/2 + B*x*x*x + C;
end;
function U2
(x:real):real;
begin
...
end;
function U3
(x:real):real;
begin
...
end;
//Y para usar la función:
dy1:=dfx(@U1,x,0.1);
dy2:=dfx(@U2,x,0.1);
dy3:=dfx(@U3,x,0.1);
También para procedimientos:
Código:
type
tDisplay=procedure; // Definimos el tipo
//---------------------------------------------------------------------------------
procedure Display;
begin
//Esta puede ser una rutina de visualización
end;
//---------------------------------------------------------------------------------
procedure Show(Display:tDisplay);
begin
... //calculos intermedios
if (CONDICION) then Display; // Aquí se ejecuta el procedimiento
...
end;
//---------------------------------------------------------------------------------
//Y podríamos llamar a Show pasando como parámetro el procedimiento Display:
Show(@Display)
Espero te sirva de algo.
Salu2