5

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

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

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

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

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

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

X_SomeName 应该被认为(实际上是,大多数时候)一个由主机应用程序处理的变量。

有任何想法吗?

谢谢!

4

1 回答 1

1

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

它在 asm lib 模块演示中使用,您还可以在 ULanguageExtensionTests 中查看新的“AutoExternalValues”测试用例,它应该更接近您所追求的。

于 2013-03-19T16:35:28.957 回答