Компилятор IDE Delphi XE2 не может найти исходный путь

Я только что купил версию XE2, установил обновление 1 ISO и сделал мои проекты с открытым исходным кодом, компилирую с ним.

Фактически:

  • Я добавил пути исходного кода библиотеки к общим IDE (для всех платформ, которые я использую, то есть 32-разрядные и 64-разрядные версии Windows);
  • Я скомпилировал регрессионные тесты TestSQLite3.dpr нашей системы - никаких проблем: EXE скомпилирован и все тесты прошли;
  • У меня странная проблема с компиляторами IDE: даже если проект скомпилирован, IDE отображает некоторые ошибки об неизвестных файлах (не в нижних сообщениях компилятора, а в верхней части дерева навигации классов - слева до редактор исходного кода), а в исходном коде .dpr имена элементов подчеркнуты красным цветом, и я не могу перемещаться внутри источника (используя Ctrl + Click на символе).

Я добавил пути исходного кода библиотеки к параметрам проекта (для Win32/Win64 - даже если он уже был установлен на глобальном уровне IDE). Теперь ошибки об неизвестных файлах исчезли, но имена элементов по-прежнему подчеркнуты красным цветом в исходном коде, а Ctrl + Click не работает.

В исходном коде TestSQLite3.dpr не указывается полный путь к единицам:

uses
  {$I SynDprUses.inc}
  Windows,
  Messages,
  SysUtils,
  Classes,
  SynCrypto,
  SynCrtSock,
  SynCommons,
  SynDB,
  SynOleDB,
  SynDBOracle,
  (...)

В приведенных выше строках Syncrypto, SynCrtSock, SynCommons подчеркнуты красным цветом.

Мое фактическое предположение, что полные пути необходимы в .dpr(SynCrypto in '..\SynCrypto.pas'). Я не тестировал это, потому что у меня нет XE2 на работе.

Так как не было проблем с предыдущей IDE с таким исходным кодом (он работал с Delphi 6 до XE), мне интересно, есть ли возможность регрессии или новый вариант, недоступный предыдущей версии IDE (возможно, на платформе), которую я не установил должным образом. Или возможно полный путь теперь необходим в .dpr - но это звучит как регрессия в компиляторе Code/Error Insight для меня.

Ответ 1

Я задал вопрос Dr Bob (я купил лицензию XE2 - поскольку уравнение 1 $= 1 € звучало немного несправедливо, Я хотел, по крайней мере, иметь реального эксперта Delphi для того, чтобы быть моим реселлером).

Вот его ответ:

Вы не ошиблись. Проблема в том, что есть три компиляторы в XE2 (как в предыдущих версиях Delphi): реальный компилятор (который отлично работает), компилятор Code Insight (который быстрее), компилятор Error Insight (который должен быть еще быстрее), и синтаксический синтаксический анализатор (который является самым быстрым).

XE2 представила ряд функций, которые сделали обычный компилятор медленнее, и дал компиляторам Code Insight и Error Insight немного беда. Прежде всего, у нас есть новые цели: Win32, Win64 и OSX которые заставляют пути поиска отличаться для каждой цели (см. $PLATFORM), а также построить конфигурацию, хотя там это только один "путь библиотеки" для каждой PLATFORM (а не для сборки Конфигурации).

Второй фактор комплексирования - это точечные наименования единиц (область охвата имена). Windows больше не Windows, но Winapi.Windows.

Я предполагаю, что эти два дополнительных фактора комплексирования проблемы для компиляторов Code Insight и Error Insight. Обратите внимание, что настоящий компилятор все еще работает. Но Error Insight показывает неправильные ошибки, а Code Insight не всегда работает для этих устройств.

Вы можете попытаться явно добавить их в проект еще раз (в котором в случае использования полного пути, как вы упомянули в своем вопросе о переполнение стека).

Итак, я боюсь, что это какой-то регресс...

Изменить при закрытии вопроса:

Первая точка заключается в том, что добавление полных путей:

  SynPdf in '..\SynPdf.pas',

в .dpr действительно позволил найти файлы, но фоновый компилятор все еще потерян, не смог найти объявление класса в этом теле.

Еще один пример регрессии:

   var Thread: array[0..3] of integer; 
       Handle: array[0..high(Thread)] of integer;

Является абсолютно безопасным синтаксисом, компилируется просто отлично, был интерпретирован предыдущим компилятором Error Insight без каких-либо проблем (работает с Delphi 5), но не работает под XE2.

Я немного разочарован в XE2 IDE. Компилятор заставляет его работать. Но IDE действительно разочаровывает. С моей точки зрения, это неприменимо. Я продолжу использовать Delphi 7 в качестве основного редактора и просто использую XE2 в качестве кросс-платформенного компилятора и отладчика.