Funktion mit Namen aufrfen
-
Ich möchte dem Anwender die Möglichkeit geben in einem Edit-Feld Funktionsnamen einzutippen. Gibt der Anwender einen richtigen Funktionsnamen an und klickt auf einen Butten soll diese Funktion ausgeführt werden.
Ich möchte jedoch nicht eine Liste mit Funktionen vergleichen sondern die Funktion direkt aus dem laufenden Programm aus ansprechen. Also z.B. so wie es Interpreter auch irgendwie tun (müssen).
Ich weis es ist komisch formuliert, aber momentan fällt mir keine bessere Erklärung ein.
-
Dafür musst du irgendwo zur Laufzeit die Funktionsnamen und deren zugehörige Funktionszeiger vorhalten, beispielsweise per map oder hash_map oder so. Dann stellt sich noch die Frage, wie das mit Parametern ist usw...
-
genau so eine Liste aus Namen <-> Zeigern will ich nicht verwenden.
Ich uche was wie GetProcAddress bei Dlls...
-
Für als __published deklarierte Methoden kannst du dafür RTTI benutzen (TObject::MethodAddress). Für einen ähnlichen Anwendungsfall hatte ich hier mal ein Beispiel gepostet.
-
Hallo
Mit reinen C++ Mitteln geht das nicht. Denn zur Laufzeit kennt C++ keine Funktionsnamen mehr. Deshalb must du ein Hilfmittel wie die genannten verwenden. Auch GetProcAddress ist keine Funktion aus dem C/C++ Standard, sondern eine Funktion aus der WinAPI.
bis bald
akari