9

Delphi 7では、関数/プロシージャを制御してクリックするたびに、その関数/プロシージャに移動しました。ただし、DelphiXEでは機能しません。少なくともすべての機能で機能するわけではありません。ExtUtils.pasにAssociateという関数があります。この関数は正しくコンパイルされているため、コンパイラはExtUtils.pasを見つけることができます(もちろん、ExtUtilsはUses句に追加され、そのフォルダは「ライブラリパス」に追加されます)。しかし、関数またはユニット名をcontrolキーを押しながらクリックしても、そこに移動しません。

これを修正する方法はありますか?


UPDATE1:また、関数(現在のユニットで宣言)をControlキーを押しながらクリックしても、関数が宣言されているインターフェイスセクションのカーソルは移動しません。

UPDATE2:
ExtUtilsユニットをプロジェクトのフォルダーに一時的に配置しましたが、動作するようになりました。したがって、Control + Click自体は機能しますが、IDEのフォルダがライブラリパスとブラウジングパスにある場合でも、IDEでユニットを見つけるのに問題があるようです。

同様のレポート:
http ://webcache.googleusercontent.com
http://webcache.googleusercontent.com
http://cc.embarcadero.com/Item/28269
ここに1つのレポート(以下の回答を参照)


新しいテスト:
Delphiを完全にアンインストールしました(そしてファイルとレジストリの残りを手動で削除しました)。その後、再インストールしました。CodeSite以外の追加ツールはインストールされておらず、データベースもインストールされていません。次に、新しいプロジェクトを作成しました。ボタンが含まれています。ボタンをクリックすると、TestUnit.Pasという外部PASファイルで定義されているTestMeプロシージャが実行されます。このライブラリへのパスをライブラリパスとブラウジングパスに追加しました。しかし、Control + ClickonTestMeプロシージャはまだ機能していません。TestMeプロシージャの上にマウスを置くと、ポップアップに「Declared in TestUnit」と表示されます。ここで、「TestUnit」という単語は青いリンクです。クリックするとWindowsシステムの音が聞こえますが、IDEが(ユニットに)移動しません。

TestMeの手順は次のとおりです。

procedure TestMe;
begin
  Beep(800, 500);
end;

ビープ音を制御してクリックすると、Windows.pasに移動します。だから、これは機能しています。別のテストを考えている場合はお知らせください。

更新:
そして今それは動作します!明らかな理由なしに!プロジェクトを開いたり閉じたりしてコンパイルしました。ただし、自動保存オプション->エディタファイルとプロジェクトオプションの2つを除いて、Delphiに変更を加えることはありません。

更新:
これはできません!!!
これで、TestMeプロシージャを制御してクリックすると、TestUnit.pasファイルにアクセスできるようになります。そこで、最初のテスト(Delphiの再インストール前)で機能したくない元のPASファイル(ExtUtils.pas)を、TestUnit.pasと同じフォルダーに移動しました。推測:TestUnit.pasを(control +クリックで)開くことはできますが、ExtUtils.pasを開くことはできません!!!!
Delphiはとても奇妙で一貫性のない動作をします!

更新:
ExtUtils.pasを編集しましたが、もう一度TestUnit.pasを開くことができません。ケンホワイトは、Delphiにバグがある可能性があるとは言わせません。そのため、「バグ」を「デルファイ」と一緒に使用することはできません。誰かが私のためにこれらの言葉をまとめることができますか?

更新:
ExtUtils.pasへの参照を完全に削除したので、プロジェクトを(TestUnitを使用して)機能するポイントに復元しました。しかし、今はバグが続いています。TestUnitで動作する数秒前であっても、現在は再び動作していません。

更新:
今、私は重要なことに気づきました:私のソースコード(テストプロジェクト)には、コンパイル可能なコードが1行あります:

procedure TForm1.Button1Click(Sender: TObject);
begin
 TestMe;
end;

このコードでは、コンパイルされていないため、青い点は表示されません。プログラムが機能した数分で、青い点が見えました。この問題の考えられる原因として、「自動保存オプション->エディターファイルとプロジェクトオプション」も除外しました。

更新:
問題を修正する方法を見つけました...数分間:プロジェクトとライブラリを別のフォルダーに移動します(どの場所でも実行できます)。control+クリックはしばらくの間機能します。ファイルを元のフォルダに戻しても機能します。したがって、Delphiはいくつかのファイルのある種のキャッシュを保持しているようです。キャッシュが壊れていて、キャッシュを保持している限り、control+clickは機能しません。しかし、ファイルを移動するときは、問題が再発してキャッシュに保存されるまで機能するように、そのキャッシュを再作成する必要があります。

4

7 に答える 7

7

ここでは、Delphi 2010を使用している5人の開発者と、同じくXEを使用している2人の開発者がいます。また、Ctrlキーを押しながらクリックしても同じことが起こります。ランダムに動作しなくなったようです。そのためのパターンや修正を見つけることはできませんでした。だから時々私たちはキュービクルからの罵倒を聞く...

その場合は、shift-ctrl-Fを使用して検索します。

シルヴァン

于 2011-06-07T14:32:37.660 に答える
3

まず、この問題についてのヒントを提供してくださった皆さんに感謝します。昔の質問かもしれませんが、ようやく何度も試してみたところ、問題の原因は実は「プロジェクトのソースコード」にあると思います。

IDEバージョン:Delphi XE

してみてください:

  1. [プロジェクトオプション]>>[Delphiコンパイラ]>>[コンパイル]で、次のことを確認します。

    デバッグ情報:true

    シンボル参照情報:参照情報

  2. プロジェクトソースファイル(dpkファイル、プロジェクトで開く>>ソースの表示)で、 {$ REFERENCEINFO OFF}を削除する か、{$REFERENCEINFOON}に変更します。

ステップ2は非常に重要であり、ステップ1が実行されたとしても、ステップ2がないとソースを参照できないことに注意してください。

于 2012-06-01T05:30:19.217 に答える
3

私はDelphi5を使用していますが、Ctrlキーを押しながらクリックしても問題があります。新しいdelphi IDEでまだ機能するかどうかはわかりませんが、CTRL-SHIFT-UpArrowまたはDownArrowを使用して宣言から実装に進むことができます。それが役に立てば幸い。

于 2014-03-06T09:06:47.410 に答える
2

Delphiには、常に次の2つの異なるオプションがあります。

  1. ライブラリパス–アプリのコンパイル時に使用されます。

  2. ブラウジングパス– Code Insightで使用されます。つまり、識別子をcontrolキーを押しながらクリックする場合にも使用されます。

2つ目を確認する必要があります。Ctrl+Clickでナビゲートしようとしているソースファイルへのパスが含まれている必要があります。

于 2011-06-07T07:57:25.943 に答える
1

インターフェイスセクションでレコードタイプを使用し、それがタイプ式で定義されていない場合、Ctrl-Clickおよびその他のジャンプ機能(Ctrl + Shift + Up / Down)が機能しないことがわかりました。

type
  TForm1 = class(TForm)
  ...
  public
    Something:record
                A, B:integer;
              end;
    procedure DoSomething;
  end;

上記のコードでは、Ctrl + Shift+Downを使用してプロシージャの実装にジャンプすることはできません。私が使用しなければならない修正:

type
  TMyRecord = record
                A, B:integer;
              end;

  TForm1 = class(TForm)
  ...
  public
    Something:TMyRecord;
    procedure DoSomething;
  end;

DelphiXE4でテスト済み。

于 2013-09-10T23:17:22.703 に答える
1

将来の参考のために。Delphi 2010を使用すると、このセクションの;virtualにあるものが違いを生むことがわかりました。interface

function MyProc(): String;  overload; virtual;
function MyProc(): Integer; overload; virtual;
//                             >>   ^   <<

この文字は、 + Click(コードインサイト)機能;を壊す可能性があります。CTRLそれでも問題なくコンパイルできます。

于 2014-04-23T12:50:47.230 に答える
0

シンボル参照情報)このオプションは、デバッグ情報とローカルシンボル(上記を参照)が有効になっていない限り、効果がありません。

コード補完およびコードナビゲーション機能(Ctrl +クリック)は、シンボル参照情報が参照情報に設定されている場合にのみ機能します。

于 2014-11-25T07:24:36.103 に答える