Executer une chaine de caracteres...

Signaler
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006
-
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
-
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

Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
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.
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
Pourquoi tu fais ca, je ne vois pas ou est le probleme ?
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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...
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
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
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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???
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
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
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

Ah oui, je connais la liste, j'ai 18 fonctions différentes, je connais leur nom et tout ouais...
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
C'est quoi les types des différents parametres des 18 fonctions ? que des entiers ?
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

Bah ils renvoient tous que du booléen, autant dire de l'entier...
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

Bah ils renvoient tous que du booléen, autant dire de l'entier... Mias ils renvoient tous le même type oui
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
Et elle viennent d'ou les chaines de caracteres ?
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
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 ...