Funktion als String einlesen und ausführen?
-
Hi,
Ich habe hier zB ein XML oder allg. Textfile, da stehen verschiedene Funktionen drin. z.B.
<FUNCTION>CSiLookup::Instance()->m_LookupPick.GetTime();<\FUNCTION>Dann parse ich diese Funktion und habe sie in einem String, nun möchte ich sie aber ausführen. Direkt geht es vermutlich nicht oder?
Wie kann ich das Problem lösen, hat jemand einen Vorschlag?
Danke
-
Du möchtest also, wenn ich dich richtig verstanden habe, das deine Programm.exe
C++ Code aufnimmt und dann, ohne neu zu compilieren dieses ausführt?Wenn Du weißt wie das funktioniert, dann sag es mir bitte.
Sowas kann ich auch wohl gebrauchen.
-
Hallo,
ich vermute execlp() und fork()
http://www.c-plusplus.net/forum/viewtopic.php?t=57966&highlight=execlp
*nicht hauen wenn's nicht stimmt*
-
Trikor schrieb:
Du möchtest also, wenn ich dich richtig verstanden habe, das deine Programm.exe
C++ Code aufnimmt und dann, ohne neu zu compilieren dieses ausführt?Nicht ganz, die Funktionen (es sind locker 100 oder mehr), sind vorhanden und werden mitcompiliert... Ich möchte halt dynamisch bei Laufzeit entscheiden welche ausgeführt wird. Und ich wollte vermeiden einen switch einzubauen der über IDs die richtige Funktion ausführt... aber es sieht fast so aus als hätte ich keine andere Wahl?
Ausser ich packe die Pointer auf die Funktionen in eine ptrArray und greiffe über den Index auf den richtigen Functionpointer zu... Dann muss ich aber über den Index (sprich 0,1,2....) auf die Funktionen zugreiffen und nicht über eine ID... Nachteil, Index sagt mir nix, ID ist aussagekräftiger... Eine Idee wäre eine CMap, von Pointern auf die Funktionen und der Key ist die ID?
Was meint ihr, welche Lösung sollte ich anstreben?
-
Da hatte ich dich wohl falsch verstanden. :p
Ich denke mal, das Du da wohl nicht um ne Switch-Funktion rumkommst. Sobald der Code eingelesen ist, muß das Prog ja erstmal suchen was es ausführen soll.
Wird natürlich viel schreibarbeit. Aber vieleicht kannst Du das ja ein wenig schachteln. String zerteilen. Wenn Teil == Was auch immer dann Zweig 1 sonst ...
Ich glaub Du weist schon was ich meine.
-
Statt CMap würde ich map<k,u> aus der STL nehmen.
evtl. Polymorphie statt switch nehmen, kommt aber
auf dein Problem an...