Exécution d'une procédure

Résolu
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008 - 23 août 2005 à 10:57
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008 - 25 août 2005 à 14:27
Bonjour,

Voici mon problème ...
Dans ma base de donnée j'ai une liste de traitement à éxecuter :
TRT1
TRT2
TRT3
...
TRTn

Dans Delphi je dois lancer ces traitements:
TRT1;
TRT2;
TRT3;
...
TRTn;

J'aimerais une fonction qui permette de lancer un Traitement chaine :
For Cpt := 1 To Nombre_TRT Do
Begin
ExecTRT('TRT'& IntToStr(Cpt));
End;

Pour l'instant j'en suis réduit à faire If 'TRT1' Then TRT1 ... si je rajoute une chaine dans ma base de donnée je suis obligé de changer le code source ... pourri ...

Merci

vaughan

6 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
24 août 2005 à 23:23
Si c'est possible, et ce n'est même pas compliqué !

Voir Appel de Fonction de façon "dynamique" et notamment la réponse de ...moi sur ce forum


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
24 août 2005 à 02:07
bah je vois pas trop

cré une procédure avec une variable Integer;

interface
Procedure traitement(X:Integer);

implementation
Procedure traitement(X:Integer);
begin
case X of
0:begin // cas #0
///
end;
1:begin // cas #1
///
end;
//etc,,,
end;
end;

ensuite tu l'appelles depuis une autre procédure

var y:Integer;

for y:=1 to 30 do traitement(y);

yve
0
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
24 août 2005 à 09:22
Le but est de faire une fonction générique qui permette de rajouter un traitement en base de donnée sans changer de code.

Ta solution est trés bien au niveau présentation mais si je dois rajouter un traitement, il me faudra rajouter dans le code

n+1 : TRT_N+1;

Pas cool ... merci tout de même ...

Dans d'autre language on peut le faire, exemple en javascript la fonction EVAL(Chaine_traitement) ...

vaughan
0
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
24 août 2005 à 09:32
En JS c'est possible, car le code est interprété et non compilé. Les noms de procédure sont gardés, mais en compilé, tout devient des adresses binaires (et y'a plus de noms).

Sachant que tu nous nous donnes pas de code Delphi, il serait étonnant que tes N procédures soient toutes différentes. Parce que comme le dit si justement yvemoreau, tu n'as qu'à juste faire une procédure avec un paramètre qui variera le fonction de la procédure.

Au final, il y a un soupçon d'absurdité dans l'air. En disant «Si je dois rajouter un traitement...» tu affirmes donc que ton nombre de procédures n'est pas défini, mais tu veux en même temps une procédure écrite en brut qui puisse gérer un nombre infini de situations. C'est complètement paradoxal. Tu viens de démontrer que ce que tu veux est impossible, ou tout simplement, que ce n'est pas clairement bien expliqué...

La solution donnée par yvemoreau est donc tout à fait adaptée.

===========
ViewVite XP : HTML
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
24 août 2005 à 10:07
Merci pour l'éclaircissement :
"En JS c'est possible, car le code est interprété et non compilé. Les noms de procédure sont gardés, mais en compilé, tout devient des adresses binaires (et y'a plus de noms)."

Ma problèmatique était pas trop mal expliqué car vous l'avez tout les deux comprise ... seulement c'est impossible en Delphi ... je déporte la gestion des traitements dans ma base de donnée dans une pile d'execution ...

Merci

vaughan
0
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
25 août 2005 à 14:27
Merci à tous ...

vaughan
0
Rejoignez-nous