【问题标题】:How to executing string as procedure如何将字符串作为过程执行
【发布时间】:2013-02-20 04:54:37
【问题描述】:

我在运行时制作了按钮组件,我希望在那里单击的每个按钮都执行唯一的过程。

例如

exec('showmessage('+quotedstr('hello word')+');');

如何在 delphi 7 中像 php 中的 eval 或 delphi xe3 中的 livebinding 一样将字符串作为过程执行?

【问题讨论】:

  • Delphi是编译好的,所以php中没有eval这样的东西,你可能误解了LiveBinding是什么
  • 嗯。 Delphi 不是 PHP……甚至在 PHP 中,eval 几乎总是错误的处理方式。 :P Delphi 是否有任何与 lambda、匿名函数或其他等价物?
  • 你可以使用像remobjects.com/ps.aspx这样的脚本引擎
  • 离开键盘一秒钟。你一次做这么多错事,太可怕了。 :P Delphi 没有eval。即使确实如此,从数据库中评估代码也是各种等待发生的问题。退后一步,想想你真正想要做什么......以及在一种无法即时解释自己的语言中这如何可能是可行的。
  • 如果您停止尝试将代码 存储在数据库中,那么如何执行它的整个问题就会消失。考虑一下。为什么要将文本代码存储在数据库中(或任何地方)?请考虑使用模板系统;数据库存储各种,您可以将它们插入到已编写的函数中,因此您只需将有限数量的值作为参数传递给这些函数。

标签: delphi procedure


【解决方案1】:

Delphi 没有这样的功能。它是一种编译语言,编译器只运行在开发者的系统上;不允许您将编译器与您的程序一起分发。

相反,您可以使用多种脚本工具中的任何一种,例如DWScript。它支持类似于 Delphi 的语言语法。它有一些内置函数,您可以从宿主程序中定义其他函数以在脚本环境中公开。

【讨论】:

  • 脚本库见this question...
  • 终于找到了FastReport的Tfsscript组件。有一个我可以使用的评估功能。谢谢建议。
【解决方案2】:

您尝试做的事情在 Delphi 中是不可能的。它没有口译员。您需要的是嵌入脚本语言。

【讨论】:

    【解决方案3】:

    【讨论】:

    • 不鼓励仅链接答案,并且提供的链接与此问题无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2021-01-11
    • 2017-11-07
    • 2011-04-15
    • 1970-01-01
    相关资源
    最近更新 更多