【问题标题】:run-time evaluation of values in DelphiWebScriptDelphiWebScript 中值的运行时评估
【发布时间】:2013-02-07 14:33:19
【问题描述】:

我的 delphi 应用程序使用 JvInterpreter(来自 Jedi 项目)运行脚本。

我使用的一个功能是表达式的运行时评估。
脚本示例:

[...]
ShowMessage(X_SomeName);
[...]

JvInterpreter 不知道 X_SomeName。 当需要 X_SomeName 的值时,脚本编写者调用其 OnGetValue 回调。 这指向我处理的一个函数。我在那里查找 X_SomeName 的值并返回它。 然后 JvInterpreter 使用我提供的值调用 ShowMessage。

现在我考虑改用 DelphiWebScript,因为它具有适当的调试接口,并且应该比 JvInterpreter 更快。

问题:不过,我没有找到任何明显的方法来实现 JvInterpreter 的 OnGetValue/OnSetValue 函数。

X_SomeName 应被视为(实际上大多数情况下)是由主机应用程序处理的变量。

有什么想法吗?

谢谢!

【问题讨论】:

  • 您是否考虑过将此变量作为回调您的应用程序的函数?当然你失去了“设置”行为,但至少完成了一半的工作。
  • 我有 - 不过行不通。 X_SomeName 的“SomeName”-Part 可能是任何东西,所以我不能预先声明它。这就是我需要运行时评估的原因。

标签: delphi jedi dwscript


【解决方案1】:

您可以通过语言扩展机制做到这一点,该机制有一个 FindUnknownName 方法,允许在现场注册符号。

用在asm lib模块demo中,你也可以在ULanguageExtensionTests中查看新的“AutoExternalValues”测试用例,应该更接近你想要的。

【讨论】:

  • 文档很糟糕,因此我花了一段时间才弄清楚如何使用它,但这正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多