Разрывы навигации по коду внутри блоков $IFDEF в Delphi 2010
У меня есть несколько условно скомпилированных классов в моем приложении.
{$IFDEF SOME_OPTION}
type
TMyClass = class
procedure Foo;
end;
{$ENDIF}
...
{$IFDEF SOME_OPTION}
procedure TMyClass.Foo;
begin
end;
{$ENDIF}
Этот параметр SOME_OPTION определен в "Параметры проекта" - "Компилятор Delphi" - "Условные определения" и в "Параметры проекта" - "Компилятор ресурсов" - "Каталоги и условия" - "Определяет символ препроцессора" для этого проекта.
Когда я пытаюсь Ctrl+ клик по их методам, ничего не происходит, навигация по коду не хочет работать.
Я использую Delphi 2010. Как я могу решить эту проблему?
3 ответа
Это ошибка, и вероятность ее исправления равна нулю.
/ Уоррен П
Я не думаю, что правильное место находится в "Параметры проекта" - "Компилятор ресурсов"...
Но в "Параметры проекта" - "Delphi Compiler" - "Условные определения".
Обновить:
Я пробовал в Delphi XE здесь, на работе, и, похоже, определено оно или нет, или где, не имеет значения для Ctrl+Click, чтобы работать для меня во всех случаях.
Обратите внимание, что у меня установлен пакет исправлений IDE Andreas Hausladen 4.6.6 и DDEv Extension 2.5. Вы их используете?
Обновление 2:
Когда он находится в том же модуле, он, кажется, работает, даже когда SOME_OPTION не определен, но не когда Foo вызывается из другого модуля.
Кажется, что работает, когда это правильно определено в параметрах проекта и вы перестраиваете приложение (вы видите синюю точку на линии, вызывающей Foo). Затем IDE может использовать компилятор, чтобы найти источник функции в другом модуле.
Это все, что я могу придумать, чтобы помочь с этим. И, как уже было сказано, это не лучшая часть IDE...
Не работает, потому что вы не определили свои директивы компиляции. Директивы должны быть определены, как описано здесь http://docwiki.embarcadero.com/RADStudio/en/Delphi_compiler_directives в разделе Использование IDE. Хорошей практикой также является перекомпиляция проекта после изменения условных директив.