Delphi 使用DWScript创建宏
我从报纸上读到这一段 有没有一种方法可以像人们在excel中定义Macor(使用VBscript)一样,在DWScript中定义宏(而不是这些函数),用一种简单的方法,脚本的名称就是以后要使用的函数的名称,而不必在执行的脚本中添加Delphi 使用DWScript创建宏,delphi,macros,dwscript,Delphi,Macros,Dwscript,我从报纸上读到这一段 有没有一种方法可以像人们在excel中定义Macor(使用VBscript)一样,在DWScript中定义宏(而不是这些函数),用一种简单的方法,脚本的名称就是以后要使用的函数的名称,而不必在执行的脚本中添加{$Include XXX} 注意:我知道这可以通过管理要保存在某个文件中的书面脚本来实现,该文件名为functions,用于ex。然后将添加的函数与其要使用的名称一起保存(Add),然后用户将编写Add(1,2)以获得结果;但是我的老板希望它看起来像excel中的vb
{$Include XXX}
注意:我知道这可以通过管理要保存在某个文件中的书面脚本来实现,该文件名为functions,用于ex。然后将添加的函数与其要使用的名称一起保存(Add),然后用户将编写Add(1,2)以获得结果;但是我的老板希望它看起来像excel中的vbscript。我不确定是否理解这个问题,所以我将列出各种可能的解释的各种答案
- 如果要声明脚本引擎隐式支持的函数而不必“{$include}”或“使用”它们,可以通过TdwsUnit组件声明它们,并将其附加到脚本组件。如果您没有设置“coexplications”选项,它们将自动可用,并且您可以在IDE中获得设计时支持
- 如果要添加内部函数(始终存在),请使用RegisterInternalFunction重载之一,您可以检查任何“dwsxxxFunctions.pas”单元以获取示例。这可能更有效,但也更麻烦
- 如果您想在源代码中预处理自定义源代码级宏(ala C的宏),可以使用过滤器功能(查看HTML或JS过滤器作为如何实现过滤器的示例)
- 如果您希望对“未知”名称做出动态反应,以便可以当场声明它们或将它们动态绑定到某个对象,则可以使用TdwsLanguageExtension.FindUnknownName,这就是RTTI环境f.i.的工作方式(请参阅dwsRTTIConnector中的TRTTIEnvironment)
- 如果您想以完全自定义的方式解析完全自定义的代码区域,那么也可以使用语言扩展,重写ReadInstr并检查asmLib&JSLibModule如何支持“asm”
- 如果要声明脚本引擎隐式支持的函数而不必“{$include}”或“使用”它们,可以通过TdwsUnit组件声明它们,并将其附加到脚本组件。如果您没有设置“coexplications”选项,它们将自动可用,并且您可以在IDE中获得设计时支持
- 如果要添加内部函数(始终存在),请使用RegisterInternalFunction重载之一,您可以检查任何“dwsxxxFunctions.pas”单元以获取示例。这可能更有效,但也更麻烦
- 如果您想在源代码中预处理自定义源代码级宏(ala C的宏),可以使用过滤器功能(查看HTML或JS过滤器作为如何实现过滤器的示例)
- 如果您希望对“未知”名称做出动态反应,以便可以当场声明它们或将它们动态绑定到某个对象,则可以使用TdwsLanguageExtension.FindUnknownName,这就是RTTI环境f.i.的工作方式(请参阅dwsRTTIConnector中的TRTTIEnvironment)
- 如果您想以完全自定义的方式解析完全自定义的代码区域,那么也可以使用语言扩展,重写ReadInstr并检查asmLib&JSLibModule如何支持“asm”
- 我不确定是否理解这个问题,因此我将列出各种可能解释的各种答案
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