Passer une procédure en paramètre
Bonjour,
Je voudrais exécuter un procédure en lui passant en paramètre une autre procédure.
D'après les infos trouvées sur Internet, j'ai essayé ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| type
TTraitement = procedure(const f: String);
{ TMain }
TMain = class(TForm)
// ..
private
{ private declarations }
// ..
procedure TraiterDossier(d: string; t: TTraitement);
procedure TaiterFichier(const fichier: String);
public
{ public declarations }
end;
procedure TMain.TraiterDossier(d: string; t: TTraitement);
var sr: TSearchRec;
begin
if (FindFirst(d + '*', faAnyFile and faDirectory, sr) = 0) then
begin
repeat
if ((sr.Attr and faDirectory) <> 0) then
begin
if (sr.Name <> '.') and (sr.Name <> '..') then
begin
nbDir := nbDir + 1;
TraiterDossier(IncludeTrailingBackslash(d + sr.Name), t);
end;
end
else
begin
TaiterFichier(sr.Name);
end;
until (FindNext(sr) <> 0);
end;
end;
procedure TMain.TaiterFichier(const fichier: String);
begin
// traitement
end;
procedure TMain.btnTraiterClick(Sender: TObject);
begin
TraiterDossier(edDossier.Text, TraiterFichier);
end; |
mais il bloque sur la ligne "TraiterDossier(edDossier.Text, TraiterFichier);" avec le message
main.pas(123,59) Error: Wrong number of parameters specified for call to "TraiterFichier"
Pouvez-vous m'aider sur la bonne manière de procéder ?
Merci d'avance de l'aide que vous pourriez m'apporter.