2012-03-13 90 views
1

創建宏我宣讀了Delphi Tools Site使用DWScript

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)的定義macors簡單的方法,其中腳本的名稱將成爲稍後將使用的函數的名稱,而不會在執行的腳本中添加{$Include XXX}

N.B .:這可以通過管理寫入的腳本來保存在某個文件中來完成,該文件名爲函數例如。 (Add),然後用戶將寫入Add(1,2)以獲得結果;然後,但是我的老闆在工作中希望它能像excel中的vbscript一樣。

+1

我沒有看到Office宏和上面概述的任何相似之處。 – OnTheFly 2012-03-13 08:24:00

+1

從我知道這是不可能的,但嘿,你有源,看它是如何做的,修改它以適應你的需求。 – ComputerSaysNo 2012-03-13 08:24:40

+0

@Dorin,謝謝,我喜歡有代碼... – Zeina 2012-03-13 08:37:38

回答

4

我不知道理解的問題,所以我將列出各種解答各種可能的解釋...

  • 如果你想聲明的是隱式腳本引擎不支持的功能必須「{$ include}」或「使用」它們,你可以通過TdwsUnit組件聲明它們,並將它附加到腳本組件。如果您沒有設置「coExplicitUses」選項,它們將自動可用,並且您可以在IDE中獲得設計時支持。

  • 如果要添加內部函數(始終存在),請使用其中一個RegisterInternalFunction重載,您可以檢查任何「dwsXxxxFunctions.pas」單位作爲示例。這可能更有效率,但也更麻煩。

  • 如果要在源代碼(ala C的宏)中預處理自定義源代碼級宏,可以使用過濾器功能(檢查HTML或JS過濾器作爲如何實現過濾器的示例) 。

  • 如果要動態響應「未知」的名字,這樣你就可以宣佈他們應當當場或者將它們綁定到動態的東西,你可以用TdwsLanguageExtension.FindUnknownName,這就是RTTI環境是如何工作的f.i. (請參閱dwsRTTIConnector中的TRTTIEnvironment)。

  • 如果要以完全自定義的方式完全解析自定義的代碼區域,也可以使用語言擴展,重寫ReadInstr並檢查JSLibModule如何支持「asm」。

+0

我需要的一個就是動態地使用「未知名稱」。我會檢查RTTIConnector並儘快回覆。謝謝埃裏克。 – Zeina 2012-03-14 07:03:25