appeler une fonction a partir d'une chaine de caracteres en c++

  • Auteur de la discussion Xorgnem
  • Date de début

Xorgnem

Nouveau membre
Bonjour, actuellement en stage, je bloque sur une fonctionnalité de mon projet en C++.

Je recois un message en string ou en char*, je l'analyse pour en tirer un nom d'une fonction, et des eventuels parametres.
Par exemple je recupère le nom function1 et le paramétre int 128.
J'ai alors tout ce qu'il me faut pour appeler la fonction function1(128); mais il reste le problème que c'est une chaine de caractères. Donc je cherche quelque chose qui me permettra a aprtir de cette chaine a appeler une fonction (biensur predefinie)

Pouvez-vous m'aider?

Merci pour vos reponses
 

zeb

Modérateur
Tu es sous Windows ?
Si oui, cette fonction est dans une DLL ?
Si re-oui, RTFM aux pages LoadLibrary et GetProcAddress.

Sinon, un gros switch avec énumération de toute l'API. :/
 

Xorgnem

Nouveau membre
slt, merci pour ta reponse
cette fonction sera mise sur un systeme embarqué tournant sous win CE...
je vais chercher des infos sur ce que tu m'as proposé.
On va eviter l'enumeration ouais :)
 

Xorgnem

Nouveau membre
Ah oui j'avais deja repéré GetProcAddress, mais c'est vista, millenium, xp,98,95 mais ils proposent pas windows CE, incompatible ?
 

zeb

Modérateur
Je suis sûr que ça marche :o
(Au pif, je n'ai jamais vu de WinCE de près :/ )
Essaye et dis-nous ;)
 

braindeadbzh

Grand Maître
Tu peux pas faire du .Net sous WinCE? Car tu pourrais utiliser l'introspection.
 

KangOl

Grand Maître
je ne vois qu'une seule chose

une map <std::string, std::fun_ptr>

ou une suite de if :/
 

Xorgnem

Nouveau membre
Ca a l'air de fonctionner le getProcAddress !
Il reste maintenant a appeler la fonction et lui passer des parametres a partir de son adresse
Merci pour votre aide
 

Watchwolf

Grand Maître
[HS]
A propos de la suite de "if". Si la liste est très longue ca ne serait pas mieux de passer par une table de hashage ?
 

zeb

Modérateur
GetProcAddress
Avec une majuscule. On n'est pas en Java. :o

Une liste de hashage qui a un mot associe l'adresse d"une fonction (pointer).
[strike]Tu la codes toi-même en C++ ta table de hashage ou tu utilises une classe toute faite ?[/strike]
EDIT: +1 batchy
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 156
Messages
6 718 486
Membres
1 586 439
Dernier membre
Thailounette
Partager cette page
Haut