2

この質問に続いて、私はあまりうまく書かれていない大規模な Delphi 7 コードベースに取り組んでいます。

小さな例として、次のようなコードを見ています。

  if FMode=mdCredit then begin
    Panel8.Caption:='Credit';
    SpeedButton3.Enabled:=false;
    SpeedButton4.Enabled:=false;
    SpeedButton5.Enabled:=false;
    SpeedButton5.Enabled:=false;
    SpeedButton6.Visible:=False;
    SpeedButton10.Visible:=False;
  end;

さらに 6 つの非常によく似たブロックが続きます。全体がこのスタイルです。したがって、コントロールに適切な名前を付ければ、これははるかに読みやすくなると思います。

グローバルな検索と置換を使用することもできますが、複数のフォームで同じ名前を使用すると問題が発生します。また、変更には注意が必要です (たとえば、SpeedButton1 の前に SpeedButton10 を変更する必要があります)。

「スマートな」名前変更を実行できるプラグインはありますか?

編集:
申し訳ありませんが、前にこれについて言及する必要がありました:GExpertsとCastaliaの「コンポーネントの名前変更」機能の両方を試しましたが、どちらも最初にフォームにコンポーネントを追加するときに使用することを意図しているようです.

コード内で検索と置換を実行したり、既存のイベントの名前を変更したりしません (SpeedButtonXClick() -> cmdCreditClick())。

私は何かを逃しましたか?

4

5 に答える 5

4

正確にはプラグインではありませんが、Delphi の最近のバージョンの 1 つと、そこにあるリファクタリング機能を使用できます。おそらく、無料のTurbo Editionを使用できます。. .

ModelMaker for Delphi 7 を試してみるのもよいでしょう。それには、あなたに役立つリファクタリングのサポートがあります。

于 2008-10-16T01:13:55.540 に答える
0

あなたのケースでうまくいくかどうかはわかりませんが、リファクタリング機能を備えた新しいバージョンの Delphi にプロジェクトをロードし、それを使用してすべての依存関係を処理しながらコンポーネント名を変更することができます。次に、差分を実行して、何が変更されたかを確認するだけです。

于 2008-10-16T01:13:17.710 に答える
0

最近の Delphi バージョンのRename Symbolリファクタリングは、プロジェクト内のユニット全体で機能します。あなたがDelphi 7と言うので、それは役に立たないと思います.過去に私はTextPadを使用しました.TextPadは、(他の多くの人と同様に)ファイル全体で強力な検索/置換を行う優れたエディタです(確認の有無にかかわらず)。

HTH

編集: Craig の権利 - GExperts はCastaliaと同様にこれを行います。

于 2008-10-16T00:43:35.677 に答える
0

GExpertsにはこのような検索と置換があると思います。

于 2008-10-16T00:44:26.817 に答える
0

なぜ同期編集を使用しないのですか? IDE の一部 (少なくとも 2006 年以降):

同期編集機能を使用すると、選択したコード内の同一識別子を同時に編集できます。たとえば、label1 が 3 回出現するプロシージャでは、最初の出現のみを編集でき、他のすべての出現は自動的に変更されます。(BDS2006 ヘルプより転載)

最初にコンポーネントの名前を変更する必要がありますが、これでほとんどの手間が省けます。コンポーネントがフォームに追加されるときにコンポーネントの名前を変更するGExpertsウィザードを好みますが、指摘したように、コンポーネントがフォームに追加されたときにのみ機能し、コード内のコンポーネントの個々の使用法には到達しません。最初にコンポーネントの名前を変更する理由は、コード ブロック全体を選択して名前を変更すると、dfm ファイルに適切な変更が加えられず、ローカルで選択されたコード ブロックだけになるためです。

この機能を使用するには、実装ブロック全体を選択し、2 つの鉛筆が線で「リンク」されているガターのボタンを押します...次に、編集する最初の鉛筆が表示されるまでタブを押します...変更するときその名前は、ソース ファイルの残りの部分でグローバルに変更されます。完了したら ESC を押します。

于 2008-10-20T14:13:16.820 に答える