Как я могу найти все устройства в моем приложении Delphi? - PullRequest
10 голосов
/ 09 апреля 2009

Достаточно легко найти все ваши внешние зависимости. Просто запустите программу и откройте окно информации о модулях. Но как мне найти все мои внутренние зависимости? Я знаю, что программа хранит список всех модулей, потому что я прослеживал свой путь через код инициализации раз или два. Но есть ли простой способ получить доступ к этому списку из отладчика?

Ответы [ 9 ]

25 голосов
/ 01 июля 2010

Отладчик Delphi может показать, какие модули были скомпилированы в модуль (exe, dll или package). Вы можете увидеть это в представлении Модули (Просмотр | Отладка Windows | Модули). Нажмите на модуль в верхней левой панели, а в нижней левой панели отобразятся все модули компиляции, которые были встроены в этот модуль. Если конкретный модуль компиляции был составлен из нескольких исходных файлов (то есть файла .pas и .inc), это также будет показано (при развертывании модуля компиляции).

В качестве альтернативы, вы можете заставить компилятор Delphi показывать вам список используемых .dcus, передавая --depends при компиляции проекта. Он выведет файл .d со списком требуемых .dcus (и .dcps).

6 голосов
/ 09 апреля 2009

Другим, но довольно громоздким способом является создание файла карты, в котором содержится список всех единиц, используемых в программе.

см. Также этот ответ: Как мне найти все единицы в моем приложении Delphi?

6 голосов
/ 09 апреля 2009

Я использую GExperts Зависимости проекта.
С помощью «Используется ...» вы можете видеть единицы, включенные, но никем не используемые. Но вы не можете видеть модуль, включенный в предложения использования, которые могут быть удалены, если у них нет фактически вызванного кода.

Вот помощь:


Зависимости проекта

Эксперт по зависимостям проекта позволяет увидеть, какие юниты использует конкретный юнит, и, в свою очередь, какие юниты используют конкретный юнит. Когда этот эксперт активирован, он анализирует весь исходный код текущего проекта для предложений использования и формирует список зависимостей. Чтобы просмотреть информацию о зависимостях для конкретного устройства, щелкните по нему на левой панели. Правая панель будет содержать информацию о зависимостях. Косвенные зависимости - это единицы, которые используются используемыми единицами конкретной единицы.

Вы можете обновить информацию о зависимостях в любое время, нажав кнопку обновления на панели инструментов, и вы можете отсортировать список файлов, нажав на заголовки столбцов.
alt text
(источник: gexperts.org )


OTOH, вы также можете использовать бесплатную ICARUS Peganza как более подробный инструмент отчетности, но менее интерактивный ...

4 голосов
/ 09 апреля 2009

GExperts имеет инструмент Зависимости проекта. Я использовал его раньше, когда пытался отследить использованные единицы. Вы не можете искать в нем, но вы можете экспортировать список в CSV-файл и искать там. Это также только перечисляет то, что находится в разделе использования. Если у вас есть модуль, который не используется, он все равно будет отображаться.

4 голосов
/ 09 апреля 2009

Вы смотрели на Pascal Analyzer или бесплатную ограниченную версию Icarus от Peganza Software ? Они будут создавать «отчеты об использовании», сообщая вам, какой модуль использует то, что используют другие, так что вы должны получить информацию, которую вы ищете.

Марк

3 голосов
/ 09 апреля 2009

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

  1. CTRL-SHIFT-B открывает браузер объектов. Если я не ошибаюсь, здесь вы можете посмотреть использованные юниты. Я не совсем уверен в этом методе, и у меня нет Delphi для его проверки.
  2. Использование Модельер ; Модельер может дать вам древовидное представление всех ваших зависимостей юнитов. Посмотрите на раздел Визуализация существующего кода для получения дополнительной информации.
1 голос
/ 01 ноября 2011

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

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

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

1 голос
/ 13 февраля 2010

Самый простой способ - это скомпилировать программу и проверить, какая .dcu была создана компилятором. Обязательно настройте компилятор для создания .dcu в отдельном каталоге, например c:\dcu. Я создал простую утилиту, которая ищет .pas для каждого .dcu файла в каталогах, которые находятся в пути поиска компилятора (который можно прочитать из файла .cfg, .dof или .bdsproject).

0 голосов
/ 09 апреля 2009

Существует (довольно старая) утилита под названием UsgParse. Он создает древовидную структуру всех юнитов, на которые ссылается проект.

Я нашел копию на сайте NexusDB через http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.thirdpartytools.general/2004-03/0231.html

источник: http://www.nexusdb.com/downloads/USGParse/USGParse_src.zip

двоичный файл: http://www.nexusdb.com/downloads/USGParse/USGParse.zip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...