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(实际上,大多数情况下)是由宿主应用程序处理的变量.
有任何想法吗?
谢谢!
您可以通过语言扩展机制来做到这一点,该机制有一个 FindUnknownName 方法,允许当场注册符号。
它在 asm lib 模块演示中使用,您还可以检查 ULanguageExtensionTests 中的新“AutoExternalValues”测试用例,它应该更接近您所追求的。