1

我从Delphi Tools Site阅读了这一段

Changes since the last SVN update are:
  Added support for FreePascal-like compile-time $INCLUDE “macros”:
    %FILE% and %LINE% insert the current filename and line number into the source
    %FUNCTION% inserts the current function name, or class.method name into the source
    %DATE% and %TIME% allow inserting the compile date/time

有没有一种方法我们可以在 DWScript 中定义宏(除了这些函数),就像人们在 excel 中定义宏(使用 VBscript)一样简单,其中脚本的名称将是稍后将使用的函数的名称,不添加{$Include XXX}执行的脚本?

注意:我知道这可以通过管理要保存在特定文件中的书面脚本来完成,该文件称为ex函数。然后将添加的函数及其名称保存(Add),然后用户将编写 Add(1,2) 以获取结果;但是我的老板希望它看起来像 excel 中的 vbscript。

4

1 回答 1

4

我不确定是否理解这个问题,所以我将列出各种可能解释的各种答案......

  • 如果您想声明脚本引擎隐式支持的函数而不必“{$include}”或“使用”它们,您可以通过 TdwsUnit 组件声明它们,并将其附加到脚本组件。如果您没有设置“coExplicitUses”选项,它们将自动可用,并且您在 IDE 中获得设计时支持。

  • 如果要添加内部函数(始终存在),请使用 RegisterInternalFunction 重载之一,您可以检查任何“dwsXxxxFunctions.pas”单元作为示例。这可能更有效,但也更麻烦。

  • 如果您想在源代码中预处理自定义源级宏(ala C 的宏),您可以使用过滤器功能(检查 HTML 或 JS 过滤器作为如何实现过滤器的示例)。

  • 如果您想动态地对“未知”名称做出反应,因此您可以在现场声明它们或将它们动态绑定到某些东西,您可以使用 TdwsLanguageExtension.FindUnknownName,这就是 RTTI 环境的工作方式(参见 dwsRTTIConnector 中的 TRTTIEnvironment)。

  • 如果您想以完全自定义的方式解析完全自定义的代码区域,您也可以使用语言扩展,覆盖 ReadInstr 并检查 asmLib 和 JSLibModule 如何支持“asm”。

于 2012-03-13T15:38:24.147 回答