Executer une chaine de caracteres...

Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006 - 8 juil. 2004 à 10:51
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 9 juil. 2004 à 16:57
Bonjour,
Je voudrais, por alléger mon appli, pouvoir executer une fonction (déjà définie dans mon code) dont le nom est contenu dans une variable.
Par exemple :
J'ai la fonction : double calculate(double x)
et j'ai une variable : char * Mycalculate = "calculate(125)";
je voudrais executer la fonction contenue dans Mycalculate... C faisable ou alors faut que j'arrête de code en Lisp??? ;)

Merci!

14 réponses

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
8 juil. 2004 à 12:31
Mais si j'ai bien compris le probleme, c'est pas du tout possible. Les noms de variables servent qu'a le a compilation, en RunTime ca reste des adresses memoires toutes betes.
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
8 juil. 2004 à 13:31
Bah ouais, c'est bien ça que je voulais faire...
Tant pis, j'aurais au moins demandé... il me reste plus qu'à faire des fonctions bien lourdes pour reconnaitre mes noms de fonctions...

Merci quand meme
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
8 juil. 2004 à 15:15
Pourquoi tu fais ca, je ne vois pas ou est le probleme ?
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
9 juil. 2004 à 11:18
Bha voilà pourquoi : j'ai une base de contraintes à executer sur un ensemble de fichiers, il y a des milliers de contraintes contenant chacune parfois jusqu'à des dizaines d'appels de fonction. Je stocke tout ça et je les execute au moment du programme.
forcément, quand tu lis, tu récupère des chaines de caractère... bah je voulais lancer mes fonctions à partir de ces chaines. Attention, pas les créers! ça c'est déjà fait!! mais les lancer en tenant compte des paramètres. Je C pas si j'ai été clair mais bon...
genre :
dans mon code j'ai la fonction:
void Afficher (int a, int b)
{
cout<<a<<" et "<<b<<endl;
}

et je récupère dans ma liste de contraintes : "Afficher (1, 15)"
voilà ce que je veux executer...
0

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

Posez votre question
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
9 juil. 2004 à 12:07
Mais tu en a combien de fonction possible a executer par l'intermediaire d'une chaine ? car si c'est un nombre bien determine alors cela va etre possible
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
9 juil. 2004 à 13:22
Bah une par une....
Je dois tester chaque fonction...
genre je récupère une chaine un peu comme ça:
"afficher(8,12)|estVide()|superieur(val, 15)" etc...
Apres je les prends une par une et je voudrais les executer...
C possible alors???
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
9 juil. 2004 à 14:01
Ma question etait : combien tu en as :
c'est quoi la liste de toute les fonctions possibles
************
afficher
estVide
superieur
...
************
la liste tu la connais ? combien d'elements ?

si tu as ca je pense que c'est possible
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
9 juil. 2004 à 14:09
Ah oui, je connais la liste, j'ai 18 fonctions différentes, je connais leur nom et tout ouais...
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
9 juil. 2004 à 14:53
C'est quoi les types des différents parametres des 18 fonctions ? que des entiers ?
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
9 juil. 2004 à 14:59
Bah ils renvoient tous que du booléen, autant dire de l'entier...
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
9 juil. 2004 à 14:59
Bah ils renvoient tous que du booléen, autant dire de l'entier... Mias ils renvoient tous le même type oui
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
9 juil. 2004 à 15:46
Et elle viennent d'ou les chaines de caracteres ?
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
9 juil. 2004 à 16:41
le code des fonctoins est dans le prog, la liste des foncitons à lancer sont dans une source extérieure (n'est pas encore défini)

Mais je vois pas pkoi tu as besoin de tout ça pour me répondre... je demande juste une idée, pas qu'on me file une solution
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
9 juil. 2004 à 16:57
Ok alors la solution (ou l'idee de la solution)

tu prends les chaines une par une, et tu va les traitees comme ceci :

tu prends le nom (nom de la fonction catchName) il copie tout les premiers caracteres jusqu'a la parenthese ouvrante puis après tu cherches dans une table (c'est la liste des fonctions) la fonction qui correspond au nom, tu as donc le nombre d'arguments qui sont tous des entiers, et apres tu lis nombre par nombre jusqu'a la parenthse fermante et apres tu appelles la fonciton.

Ceci est surement vague mais l'idee est la ...
0
Rejoignez-nous