funktion aus datei bestimmen



  • hi leute,

    man stelle sich folgendes szenario vor. ich habe eine bestimmte datei, meinetwegen *.ini oder irgendetwas in der richtung. und es soll eine funktion ausgeführt werden, die durch die datei bestimmt wird. sprich ich lese dann aud der datei den namen der funktion aus

    *.ini
    fkt="do_something()"

    aber wie realisiere ich das in c++. also wie ich n string aus einer ini-file lese ist ja nicht das problem. aber wie sage ich dem programm dann diesen string sollst du aus funktion ausführen?!

    ich hoffe mein problem ist klar und auch realisierbar 🙂

    mfg freaker



  • Hallo,

    Indem du den eingelesenen String vergleichst und dann die dazugehörige Funktion aufrufst.

    if( str == "do_something()")
       fkt=do_something();
    

    Du könntest natürlich auch eine map mit string als index und den Funktionspointern als Daten erzeugen. das lohnt sich für meine Begriffe aber nur bei sehr vielen Funktionen.



  • hmm die idee ist mir auch schon gekommen. also zumindest so ähnlich. ich habe es mit einer art int-kennung gemacht

    if(key == 1)
    do_something();
    else if(.....)

    und nun jedenfalls wird das auch bei sehr vielen funktioen unangenehm umfangreich ... und das wichtigste habe ich ja auch noch vergessen, natürlich will ich ja die sache parameter nicht vergessen

    also zum beispiel es existiert irgendwo in meinem projekt die funktion

    void do_sth(int a, int b) { ... }

    und am liebsten wäre es mir dass dann irgendein parser eben das skript durch geht und dann den string als funktion ausführt

    *.ini

    fkt=do_sth(10, 2);

    also wenn der auf den string kommt, liest er ihn aus und merkt dass es eine bestimmte struktur hat und führt das eben gleich aus.



  • Das geht mit C++ nicht direkt. Da müsstest du einen Skript Interpreter mit einbauen. Evtl. sowas wie Lua.



  • das ist schön^^ hab mir nämlich vorgestern schon mal gedanken drüber gemacht und war mir nicht sicher ob ich um eine skriptsprache drum herum komme. aber jez scheint es amtlich. LUA ich komme^^ vielen dank dir braunstein^^

    mfg freaker



  • Hmm hab da mal fürn jemaden nen kleinen Code zusammen gepackt. Ist nicht sonderlich schwer ... musst halt nur einen Prototypen von Funktion haben, der als Parameter allerdings string annimmt ... ne std::map mit Funktionszeigern und dazu passendem String und los geht's 🙂 Hatte in der Sprache jetzt Kommentare, Variablen und Funktionen drin und muss sagen, dass war in .5h (wenn überhaupt) fertig ... das ist nicht so viel Aufwand 🙂 Aja und meine früher auch mal nen Artikel darüber bei flipcode.com gesehen zu habne ...


Anmelden zum Antworten