1

Delphi ツール サイトからこの段落を読みました

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

スクリプトの名前が後で使用される関数の名前になる簡単な方法で、Excel でマクロを (VBscript を使用して) 定義するのと同じように、DWScript (これらの関数以外) でマクロを定義する方法はありますか? 、{$Include XXX}実行されたスクリプトを追加せずに?

注: これは、書かれたスクリプトを管理して、ex のfunctionsと呼ばれる特定のファイルに保存することで実行できることを知っています。次に、追加された関数を使用する名前で保存します ( Add )。その後、ユーザーは Add(1,2) を記述して結果を取得します。しかし、職場の上司は、Excel の vbscript のようなものにしたいと考えています。

4

1 に答える 1

4

質問がよくわからないので、考えられるさまざまな解釈に対するさまざまな回答をリストします...

  • 「{$include}」または「使用」することなく、スクリプト エンジンによって暗黙的にサポートされている関数を宣言する場合は、TdwsUnit コンポーネントを介して宣言し、スクリプト コンポーネントにアタッチすることができます。「coExplicitUses」オプションが設定されていない場合、それらは自動的に使用可能になり、IDE で設計時のサポートが得られます。

  • 内部関数 (常にそこにある) を追加する場合は、RegisterInternalFunction オーバーロードの 1 つを使用します。例については、「dwsXxxxFunctions.pas」ユニットのいずれかを確認できます。これは潜在的に効率的ですが、より面倒です。

  • ソース コードでカスタム ソースレベル マクロ (ala C のマクロ) を前処理する場合は、フィルター機能を使用できます (フィルターの実装方法の例として、HTML または JS フィルターを確認してください)。

  • 「不明な」名前に動的に反応して、その場で宣言したり動的にバインドしたりしたい場合は、TdwsLanguageExtension.FindUnknownName を使用できます。これが RTTI 環境の仕組みです (dwsRTTIConnector の TRTTIEnvironment を参照)。

  • 完全にカスタムな方法で完全にカスタム化されたコード領域を解析したい場合は、言語拡張も使用できます。ReadInstr をオーバーライドし、asmLib と JSLibModule がどのように「asm」をサポートするかを確認します。

于 2012-03-13T15:38:24.147 に答える