IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML Discussion :

convertir une string en une fonction


Sujet :

XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut convertir une string en une fonction
    J'ai un petit problème de conception. Je parse un fichier XML qui me renvoie une chaine de caractères. Cette chaine de caractères est en fait une fonction, et mon programme, après parsing, doit utiliser cette chaine pour s'en servir comme un appel de fonction.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    XML : 
    ...
    <MyFunc arg1=a arg2=b>myfunc</MyFunc>
    ...
     
    C++ : 
    // 1. Parsing : std::string s = "myfunc(a,b)"
    ...
    // 2. Use string as a function
    ...
    ***call***(s); // execute myfunc(a,b);
    Je précise que le nom myfunc est défini par l'utilisateur. Impossible donc de savoir à l'avance (cad avant compilation du programme de l'utilisateur) comment se nommera cette fonction. Comment faire ? Faut-il utiliser des functors ou qq chose du style ? Si oui, comment faire ?

    Danny.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 82
    Points : 68
    Points
    68
    Par défaut
    Cette fonction dont tu parles (dont j'ai bien compris qu'on ne sait pas à l'avance qui elle est), elle est définie où ? Je vois deux possibilités :
    - elle est définie dans ton code, c'est-à-dire que l'utilisateur a le choix d'utiliser une fonction parmi un stock de fonctions que tu as codées.
    - elle est définie dans une librairie dynamique que fournit l'utilisateur.

    Dans le premier cas, la liste de fonctions disponibles est connue de toi et non extensible par l'utilisateur, donc bien connue à la compilation. Tu peux très bien t'en sortir avec un switch ou une série de if-else if- etc... codés en dur. En fonction de la valeur de la string retournée, tu utiliseras une ou l'autre fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    string funcName = getFunctionName(); // Méthode qui parse le fichier XML et te donne le nom de la fonction.
    if(funcName == "fonction1")
    {
          fonction1();
    }
    else if (funcName == "fonction2")
    {
          fonction2();
    }
    else
    {
          // Erreur, nom inconnu.
    }
    ...
    Dans le second cas, je ne m'y connais pas très bien mais il existe des moyens pour obtenir un pointeur sur une fonction définie dans une librairie, à condition que cette fonction soit définie "extern C". Il me semble aussi que ton programme doit dans ce cas connaître le prototype de la fonction.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 681
    Points
    10 681
    Billets dans le blog
    3

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. [C#] Comment Splitter une string avec une string ?
    Par ADJ Design dans le forum C#
    Réponses: 12
    Dernier message: 27/07/2006, 12h10
  5. Conseil sur l'extraction d'une string dans une string
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 02/06/2006, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo