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

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

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

Есть ли уловки, чтобы исправить все эти проблемы?


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

Ответы [ 6 ]

8 голосов
/ 21 мая 2011

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

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

4 голосов
/ 21 мая 2011

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

2 голосов
/ 07 августа 2013

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

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

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

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

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

1 голос
/ 13 января 2017

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

enter image description here

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

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

enter image description here

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

Таким образом, мы выбираем эти текстовые области после символа ";" Затем удалите и снова введите удаленные коды!

enter image description here

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

enter image description here

0 голосов
/ 18 августа 2017

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

0 голосов
/ 26 декабря 2012

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

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

XE2 представил ряд функций, которые замедлили работу обычного компилятора, и дал компиляторам Code Insight и Error Insight немного проблем.Прежде всего, у нас есть новые цели: Win32, Win64 и OSX, которые приводят к тому, что пути поиска для каждой цели различны (см. Директиву $ PLATFORM), а также конфигурация сборки, хотя для каждого существует только один «путь к библиотеке»ПЛАТФОРМА (а не для конфигураций сборки).

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

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

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

Я обнаружил следующее:

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

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

...