Funktion per String aufrufen (war: So mal allgemein)
-
Ich ahtte mcih eigentlich schon länger mal gefragt, ob es möglich ist in einem String einen kompletten Funktionsaufruf zu schreiben und den dann auszuführen, und jetzt könnte ich es auch gebrauchen. Ist zwar nur eine klienigkeit und man kann den inhalt auch abfragen und dann die Funktion aufrufen. Aber wenn es eben wie oben beschrieben geht wäre das auch net schlecht zu wissen, danke schonmal. leitz
Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-Jansen
-
hö? kannste mal ein visuelles beispiel machen wie du dir das vorstellst?
-
Nein, das ist nicht möglich, dafür würdest du ja eine Art "Laufzeit-Compiler" benötigen.
Hat ausserdem nichts speziell mit dem BCB zu tun, verschoben nach "Rund um".
-
einen interpreter schreiben!
oder, wenn man nur eine bestimmte funktion aufrufen will:
std::map
void foo()
{
}map<string,void()(void)> m;
m.insert(pair<string,void()(void)>("foo",&foo);und dann
map["foo"]();
-
Shade Of Mine schrieb:
einen interpreter schreiben!
Oder einen Laufzeitcompiler
-
Es ist möglich, Stichwort Exploit.
Bei C++:Thema: Warum sind Exploits in C, oder so!!!Damit wird dein Programm aber zu einem unsicherem Programm !!
-
Abgesehen davon geht das unter .NET - egal welche Sprache. Ist eine ganze lustige Sache. Und nicht mal zwangsläufig unsicher (Stichwort: Sichtbarkeitsbereiche).
-
das sollte auch mit C und C++ möglich sein, wenn man die Anwendung mit Debug Symbolen erzeugt und ein bissel rumfummelt
-
Du könnstest auch fertige Active Script Hosts verwerden. Sind dann auch Sprachneutral. Ein Beispiel, das ich aber nicht zur Verwendung empfehle, ist der Microsoft Scripting Control, aber nur so zum ausprobieren, reicht er völlig aus.
-
Vielleicht hilft Dir ein Blick in die Datei $(BCB)\Source\vcl\typinfo.pas
weiter. Hier findet man von Klassen, die von TObject erben, Informationen
über Properties usw. Auch die Adressen der Get-/Set-Methoden kann man ab-
fragen. Ich bin selbst momentan dabei herauszufinden, wie das geht.Gruß,
Alexander