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):
Dans mes process, avant de lancer mon traitement, j'ai des instructions de la sorte pour le process 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
ou, pour le process 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8procedure callbackProcess1; ..... traite := TTraite.Create; traite.myCalback := callbackProcess1; traite.Lance; ...
etc ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8procedure callbackProcess2; ..... traite := TTraite.Create; traite.myCalback := callbackProcess2; traite.Lance; ...
Maintenant, je rajoute un nouveau process qui, lui, aura besoin de passer un paramètre à la fonction de callback
Évidemment, cela ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; ...
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
Partager