2

アプリケーション コード ベース (つまり、複数のアプリケーション) で広く使用されているコンポーネントがあります。一般的に使用されるイベント ハンドラー プロパティの 1 つを変更したいと考えています。Delphi 6 フォーム ソース ファイル(DFM + PAS)を調べて、フォーム上のコンポーネントのインスタンスに対して現在定義されているイベント ハンドラを検索および置換するツール/ユーティリティが必要です。

例えば。現在次のように定義されているコンポーネントにイベント ハンドラー プロパティがあるとします。

property eventHandler1: TOldEventHandlerProc read FOnEvent write FOnEvent;

TOldEventHandlerProc は次のように定義されています。

TOldEventHandlerProc = procedure(oneParm: string) of object;

TOldEventHandlerProc を次のように変更します。

TOldEventHandlerProc  = procedure(oneParm: string; twoParm: integer) of object;

ユーティリティで Form の DFM/PAS ファイル ペアの内容を調べて、定義されている FOnEvent のすべてのインスタンスを見つけ、TOoldEventHandlerProc の新しい定義に基づいて、古いパラメータ リストを新しいパラメータ リストに交換する必要があります。たとえば、MyComp1 という名前のコンポーネントのインスタンスを持つ MyForm1 という名前のフォームがある場合、イベント ハンドラーに対して次の IDE 生成宣言が作成されます。

TMyForm1 = class(TForm)
    // IDE created event handler stubs.
    procedure MyComp1OnEvent(oneParm: string);

イベント ハンドラーの本体を次のように宣言します。

procedure TMyForm1.MYCom1OnEvent(oneParm: string);

ユーティリティは、OnEvent() ハンドラーの各インスタンスを検索し、イベント ハンドラーの代わりにヘッダー宣言を、イベント ハンドラーの本体宣言を置き換え、パラメーター リストを交換して結果を次のようにする必要があります。

TMyForm1 = class(TForm)
    // IDE created event handler stubs.
    procedure MyComp1OnEvent(oneParm: string; twoParm: integer);

イベント ハンドラーの本体を次のように宣言します。

procedure TMyForm1.MYCom1OnEvent(oneParm: string; twoParm: integer);

そのようなツールが見つからない場合は、簡単で汚いものを自分で書きますが、時間を節約できるかどうかを尋ねてみようと思いました。そのようなリファクタリングツールを知っている人はいますか?

4

1 に答える 1

2

リファクタリング機能は、最近の Delphi バージョンで利用できます。

それらのいずれかを使用してコードを簡単にリファクタリングし、最終的にすべての DFM を修正して、Delphi 6 との互換性を確保できます。

于 2011-12-16T06:57:27.913 に答える