Паскаль Дельфи - необъявленный идентификатор

Я использую библиотеку Synapse в проекте Delphi для создания сетей.

Когда я пытаюсь использовать один из типов, определенных во внешних блоках, а именно: "TTCPBlockSocket", он имеет красное подчеркивание и говорит "Необъявленный идентификатор" TTCPBlockSocket "".

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

Странно то, что у меня была идентичная установка в другом проекте, и в этом проекте не было ошибок.

Примечание: я не могу установить / отредактировать программное обеспечение / настройки, поэтому я не могу добавлять какие-либо исправления.

1 ответ

Решение

Это известная ошибка в Error Insight. Он существует с тех пор, как Error Insight был впервые представлен в Delphi 2005 или 2006, и до сих пор существует в Delphi XE5.

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

Есть два исправления (одно очень простое, другое работает, но с обратной стороны это боль):

  1. (Легкий). Полностью отключите Error Insight, в Инструменты-> Параметры, раздел Параметры редактора, Code Insight; просто снимите флажок для Error Insight. Я предпочитаю этот, потому что Error Insight все равно не работает должным образом, и это позволяет избежать раздражения от необходимости использовать другой параметр каждые 10 минут. Это первое, что я делаю, когда устанавливаю новую версию IDE и вижу красные подчеркивания.

  2. (Путь боли). Используйте Project->Add to project для каждого модуля, который содержит один из подчеркнутых символов. Это добавляет ссылку на каждый модуль в файл проекта.dpr, что приводит к значительному увеличению его размера. Это боль, потому что вы обычно должны делать это для каждого отдельного устройства (по моему опыту, включая те, которые являются частью стандартного VCL/RTL), которое еще не было добавлено, и это очень быстро становится раздражающим. Ошибка Insight не говорит вам ничего, что быстрые Ctrl+F9 в любом случае не будет, IMO.

Другие вопросы по тегам