Во всех приведенных выше ответах рассматривается IPv4 ... вы должны спросить себя, насколько разумно ограничивать ваше приложение IPv4, добавляя такие проверки в этот день, когда сеть мигрирует на IPv6.
Если вы спросите меня: не проверяйте это вообще. Вместо этого просто передайте строку как есть сетевым компонентам, которые будут использовать IP-адрес, и дайте им выполнить проверку. Поймайте исключения, которые они будут выдавать, когда это не так, и используйте эту информацию, чтобы сообщить пользователю, что произошло. Не изобретайте колесо, опирайтесь на работу других.
Не забудьте явно включить все единицы измерения (*), используемые вашим проектом, в dpr.
Не полагайтесь на путь поиска, чтобы найти модуль, вызванный из другого модуля, добавьте его в dpr. Dpr будет намного длиннее, но все, что связано с компиляцией, будет быстрее, включая анализ кода.
(*) не единицы установленных компонентов.
Это давняя проблема с Delphi, и мне пришлось прибегнуть к отключению автоматического завершения. Поработав таким образом некоторое время, я был очень доволен этим. Даже если это займет всего долю секунды, из-за задержки IDE мой набор текста приводил в замешательство и прерывал мой рабочий процесс. Гораздо лучше с выключенной автоматикой, IMO.
Delphi Code Insight вызывает dll компилятора для выполнения специальной компиляции, когда пользователь запрашивает Code Insight (Ctrl + Пробел, '.' И т. Д.). Эта настраиваемая компиляция выполняет сборку в модуле и пропускает генерацию кода, связывание и т.д., пока не достигнет вашего текущего смещения в файловом буфере. Имея это в виду, список модулей, который компилятор видит перед тем, как добраться до вашего текущего положения, будет играть важную роль в определении скорости операции Code Insight. Может быть модуль (или несколько модулей), которые вызывают сильную зависимость файловой системы и т. Д. Вполне возможно, что переупорядочение предложения uses, рефакторинг предложения uses, чтобы он находился в нескольких файлах, или удаление модулей в предложении uses, которые не ' t, необходимое для компиляции вашего текущего модуля, может улучшить производительность. Дополнительно,
Я не знаю, какую версию вы используете, но гораздо более быстрое завершение кода - одна из вещей, которые мне больше всего нравятся в Delphi 2009.
Включаете ли вы каталоги исходных текстов для пользовательских компонентов вашей команды в путь к библиотеке? Было бы интересно увидеть разницу в скорости, если бы в пути к библиотеке были только DCU-файлы компонентов, а не исходные файлы.
Я сам столкнулся с этой проблемой, я исправил ее, удалив неработающую сетевую ссылку из пути к моей библиотеке среды. Решил мою проблему на 100%.