DelphiWebScript中值的运行时评估

Fol*_*ust 5 delphi jedi dwscript

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

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

[...]
ShowMessage(X_SomeName);
[...]
Run Code Online (Sandbox Code Playgroud)

JvInterpreter不知道X_SomeName.当需要X_SomeName的值时,脚本编写器调用其OnGetValue-callback.这指向我处理的功能.在那里,我查找X_SomeName的值并返回它.然后JvInterpreter用我提供的值调用ShowMessage.

现在我考虑切换到DelphiWebScript,因为它有一个合适的调试接口,也应该比JvInterpreter更快.

问题:我没有找到任何明显的方法来实现JvInterpreter对其OnGetValue/OnSetValue函数的作用.

应该考虑X_SomeName(实际上,大多数情况下)是由宿主应用程序处理的变量.

有任何想法吗?

谢谢!

Eri*_*nge 1

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

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