Pointeur de fonction (délégués)
Les délégués définissent des types destinés à héberger des pointeurs vers des fonctions ou méthode.
Déclaration
Les pointeurs de fonctions sont déclarés comme suit:
type
TNomDelegue = procedure|function [(...parametres...)] [: TypeResultat];
TNomDelegue = procedure|function [(...parametres...)] [: TypeResultat];
Ils permettent de spécifier une fonction en tant que variable ou paramètre.
Par exemple:
type TSalutation = procedure (nom : String);
procedure Bonjour(nom : String);
begin
PrintLn('Bonjour '+nom+'!');
end;
procedure AuRevoir(nom : String);
begin
PrintLn('Au revoir '+nom+'.');
end;
var fn : TSalutation;
fn:=Bonjour;
fn('Albert');
fn:=AuRevoir;
fn('Albert');
procedure Bonjour(nom : String);
begin
PrintLn('Bonjour '+nom+'!');
end;
procedure AuRevoir(nom : String);
begin
PrintLn('Au revoir '+nom+'.');
end;
var fn : TSalutation;
fn:=Bonjour;
fn('Albert');
fn:=AuRevoir;
fn('Albert');