0

我的應用程序中有幾個有條件編譯的類。

{$IFDEF SOME_OPTION} 
type 
    TMyClass = class 
    procedure Foo; 
    end; 
{$ENDIF} 

... 

{$IFDEF SOME_OPTION} 
procedure TMyClass.Foo; 
begin 

end; 
{$ENDIF} 

該選項SOME_OPTION在「項目選項」定義 - 「Delphi編譯器」 - 「有條件的定義」,並在「項目選項」 - 「資源編譯器」 - 「目錄和條件」 - 「定義預處理器符號「這個項目。

當我嘗試Ctrl +單擊他們的方法時,沒有任何反應,代碼導航不想工作。

我使用德爾福2010年。我該如何解決這個問題?

+2

我有SOME_OPTION定義,即使這個問題,就像你都經歷過。這是一個錯誤,它被修復的可能性爲零。即使在當前版本的「項目選項」中定義它。但特別困難的是,如果它是在options.inc文件中定義的,而不是直接在.dproj選項中定義的。 – 2012-01-16 18:21:12

+0

同意@WarrenP無法指出問題。我們確實使用包含選項的inc文件,但也使用了本地定義的條件。我習慣於構建,不編譯,因此dcu不可能不符合當前的定義設置。儘管如此,條件定義和ctrl點擊與彼此似乎並不一致,並且至少在D2006之後,可能更早。 – 2012-01-16 19:42:25

回答

2

這是一個錯誤,它被修復的機會是零。

/沃倫P

1

我不認爲合適的地方是在「項目選項」 - 「資源編譯器」 ...
但在「項目選項」 - 「德爾福編譯器」 - 「有條件的定義」。

更新:
我在Delphi XE試圖在這裏工作,以及它是否被定義或沒有,或在哪裏,似乎並不重要了按Ctrl +點擊我在所有情況下工作。
請注意,我安裝了Andreas Hausladen's IDE Fix Pack 4.6.6和DDEv Extension 2.5。 你用它們嗎?

更新2:
當在同一個單位,它似乎無法工作,即使SOME_OPTION是不確定的,但富時從另一個單元調用。
雖然在項目選項中正確定義了重建應用程序(您會看到名爲Foo的行上的藍點),但看起來還是有效的。然後,IDE可以使用編譯器在其他單元中定位功能源。

這就是我所能想到的那一刻來幫助那個。正如已經指出的那樣,它不是IDE的最佳部分...

+0

對不起,我在輸入問題時錯過了那個地方。它也包含在這裏 – Andrew 2012-01-16 19:02:00

+0

無論你應該從資源編譯器設置中刪除定義。 – 2012-01-16 19:04:14

+0

我使用了IDE Fix Pack和DDEv Extension 2。5 - 沒有結果 – Andrew 2012-01-16 19:47:10