Delphi XE показывает не менее 200 ошибок, но программа компилируется просто отлично

Мой новый Delphi XE показывает сотни ошибок на панели "Структура". Он показывает такие ошибки, как "Необъявленные файловые эксперты в строке 130" или "Необъявленная запись в строке 242". Даже если он показывает эти ошибки, программа просто компилируется.

Я также вижу, что понимание кода не всегда работает. Когда я перемещаю курсор над переменной, курсор начинает мерцать, и всплывающее окно не появляется. В других случаях он просто выделяет некоторые единицы красного цвета, и он говорит, что он не может их найти.

Есть ли уловки для устранения всех этих проблем?


Update/Псевдо-фикс:
Я обнаружил, что перезапуск IDE помогает некоторое время.
Я действительно помогу, что однажды Embarcadero выпустит Delphi ST (от STable).
:)

Ответ 1

Да, у CodeInsight и ErrorInsight, как известно, много проблем. Некоторое время они немного улучшили каждую версию, но еще многое предстоит сделать. Андреас Хаусладен, который, вероятно, самый умный парень в сообществе Delphi, много сделал в внутренней среде IDE, и он говорит, что у них есть ошибки на основе состояния гонки, которые, вероятно, не могут быть исправлены без полной перезаписи.

Если эти ложные ошибки дают вам проблемы, вы, вероятно, можете их отключить, как заметил Кен в своем комментарии.

Ответ 2

Для меня это обычно помогает закрыть проект и снова открыть его; ошибки структуры исчезают.

Ответ 3

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

Это когда-то было указано кем-то AGES назад в отчете о проблемах для более ранней версии Delphi, и, похоже, никто не поднял ее. Если обнаружение ошибок встречается с несуществующим файлом в списке LIBRARIES, он, похоже, просто перестает смотреть дальше - оставляя эти раздражающие красно-красные крики везде! Проблема заключалась в том, что в этом отчете о проблемах было так много записей, что все, кажется, не хватало этого решения!

Перейдите в раздел "Параметры" и найдите вкладку "БИБЛИОТЕКА". Просматривайте списки и удаляйте каждую запись, которая является ABSOLUTE, но INVALID. Вероятно, вы можете и изначально оставить любые переменные в них, такие как $(BDSLIB), даже если они недействительны, но определенно начните с удаления недопустимых, объявленных без переменных (что я подразумеваю под абсолютным). Если вы gung-ho и просто разрешите Delphi автоматически удалить недействительные, все те, у которых есть "невыполненные" переменные, тоже исчезнут - и это сломает многие вещи (это еще одна ошибка Delphi, обсуждаемая в другом месте на этом форуме, я считаю). Возможно, вам также придется повторить это с помощью библиотек Project-Options, но будьте более осмотрительны здесь, если проект пришел от кого-то еще!

Если это не сработает сразу, используйте вкладку соответствующих опций, чтобы отключить флажок Error-Insight, а затем снова включить его (каждый раз закрывая диалог настроек). Это должно избавиться от любого кэшированного материала, если таковое существует.

Удаление некоторых некорректных записей, выполненных для меня на Delphi XE4.

Ответ 4

Мы заметили, почему возникают проблемы. Если в коде есть некоторые недопустимые невидимые символы, это указывает на ошибку. Эти недопустимые символы иногда возникают, когда вы копируете текст и вставляете его в редактор delphi. Затем иногда delphi вставляет текст с недопустимыми символами!

введите описание изображения здесь

Сначала вы должны скопировать весь текст с ошибкой и вставить его в блокнот ++. введите описание изображения здесь

Вы увидите, что весь текст, который вы скопировали, также не будет вставлен. Вы увидите этот поврежденный текст. Вы должны посмотреть на вставленный код, определить, какой код вставлен как текст. Вы должны посмотреть, какой код вы можете видеть в блокноте, как вставляемый последним char.

введите описание изображения здесь

здесь мы видим на снимке: "RoutePatternObject"; поэтому после этих символов появляются некоторые недопустимые символы, но мы не можем видеть!

Итак, мы выбираем эту текстовую область после символа ";". Затем удалите и снова введите удаленные коды!

введите описание изображения здесь

Все красные подписи подписи исчезнут!

введите описание изображения здесь

Ответ 5

У меня были те же ошибки, и я задал один и тот же вопрос, это был ответ: Из другого сообщения:

Вы не ошиблись. Проблема в том, что есть три компиляторы в 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 не всегда работает для этих устройств.

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

То, что я узнал, было:

  • 99% ошибок связаны с тем, что редактируемые файлы не сохраняются правильно (включая ссылки)
  • Если вы добавляете профили Сохраните файлы .dpr,.dproj,.pas,.dfm(сэкономьте блок, сохранить проект)
  • Если все не удается, сохранение + перезагрузка обычно исправляет его.
  • Для старых проектов удалите файл .res, у него есть неудачные пути, Delphi воссоздает его.

(Извините за плохой начальный пост, только что получил учетную запись Stackoverflow, не было разрешено ее редактировать. Надеюсь, этого будет достаточно)

Ответ 6

Скопируйте и вставьте файл pas в блокнот, очистите файл pas, сохраните, закрыв IDE, откройте IDE, затем скопируйте из блокнота и вставьте обратно в файл pas, который работал у меня.