执行存储在字符串中的函数

时间:2015-03-01 04:52:48

标签: string function delphi execution

让我们说我的Delphi应用程序中有一个功能:

MsgBox 并且有一个字符串,其中包含MsgBox

我知道你们大多数人会说它可能,但我认为这是可能的,因为我使用资源编辑器打开了编译的exe(使用delphi XE2编译),并且该资源编辑器是为Delphi构建的。在那里,我可以看到我编写的代码中的大多数。因为变量名称,函数名称等在编译期间没有改变,所以应该有一种从字符串执行函数的方法,但是如何?任何帮助将不胜感激。


修改

我想要做的是创建一个简单的解释器/脚本引擎。这就是它应该如何运作:

有两个文件,scr.txt和arg.txt

  • scr.txt包含:

    msg_show
    0
  • arg.txt包含:

    "Message"

现在让我解释一下0是什么:

  • 首先,scr.txt的第一行是函数名称
  • 第二行告诉他们的参数在arg.txt中的哪一行,即0告诉"消息"是msg_show的参数。

我希望我的问题现在清楚了。

2 个答案:

答案 0 :(得分:2)

  

我想制作一个简单的脚本引擎。

为了执行以文本形式存储的任意代码,您需要编译器或解释器。您需要自己编写一个,或嵌入已存在的一个。实际上,后一种选择是您的最佳选择。有一些可用,但在我看来,很难看过dwscript

答案 1 :(得分:-3)

我想我已经解决了我的问题!答案在this问题的第一个答案中
修改:
但有了这个,至于第一个评论中提到的问题的解决方法,我有一个非常简单的解决方案。
您不需要将所有参数/参数传递给它。举个例子:
您有两个文件,如问题中所述。现在您需要执行这些文件。它很简单:
阅读scr.txt的第一行
检查它是否是一个功能。如果没有,请跳过线路
如果是,请阅读下一行,告诉索引它的参数在arg.txt中的位置 将索引(整数)传递给" Call"功能。
现在对于必须执行的函数,它应该知道它需要多少个参数。即2
假设函数是" Sum(a,b:integer)"。它需要2个参数
现在让函数从arg.txt中读取两个参数 它完成了!
我希望它能帮到你们所有人 我可以得到一些代表:)