Problème de callback avec des paramètres
Salut à tous, je plante le décors.
J'ai un traitement générique qui peut être appelé par différents process. Ce traitement, avant de se terminer doit faire quelques petites choses qui, elles, sont spécifique en fonction du process appelant.Pour cela, j'utilise un système de CallBack pour que mon traitement générique appelle toujours la même méthode.
Donc dans mon traitement j'ai quelque chose de la sorte (pas du tout sur du code, je l'ai pas sous la main, je fais de tête):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Type
TMyCallback = procedure() of object;
TTraite = class()
myCallback : TMyCallback;
procedure Lance;
.....
procedure Lance
begin
......
If Assigned(myCallback) then myCalback;
......
end; |
Dans mes process, avant de lancer mon traitement, j'ai des instructions de la sorte pour le process 1 :
Code:
1 2 3 4 5 6 7 8
|
procedure callbackProcess1;
.....
traite := TTraite.Create;
traite.myCalback := callbackProcess1;
traite.Lance;
... |
ou, pour le process 2
Code:
1 2 3 4 5 6 7 8
|
procedure callbackProcess2;
.....
traite := TTraite.Create;
traite.myCalback := callbackProcess2;
traite.Lance;
... |
etc ...
Maintenant, je rajoute un nouveau process qui, lui, aura besoin de passer un paramètre à la fonction de callback
Code:
1 2 3 4 5 6 7 8
|
procedure callbackProcessEnquiquineur(toto as string);
.....
traite := TTraite.Create;
traite.myCalback := callbackProcessEnquiquineur('Pour pas faire comme les autres');
traite.Lance;
... |
Évidemment, cela ne marche pas.
Donc pour résumer, j'ai x callback qui ne nécessitent pas de paramètres, mais là je rajoute un callback qui, lui aura un paramètre. Et peut-être qu'à l'avenir il y en aura d'autres avec potentiellement un paramètre de type différent, avec potentiellement plusieurs paramètres, etc ...
Existe-il une solution, je sais pas peut-être un système de paramètres optionnels de type génériques, un tableau de variant peut-être, je sais pas
où je dois accepter de me dépanner avec une vilaine variable globale à la place du paramètre ?
C'est bien plus simple, mais c'est pas propre
Et j'ai oublié l'essentiel : DELPHI 6