Как найти все устройства в приложении Delphi?

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

Ответ 2

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

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

Ответ 3

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

Вот помощь:


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

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

Вы можете обновить информацию о зависимостях в любое время, нажав кнопку обновления на панели инструментов, и вы можете отсортировать список файлов, нажав на заголовки столбцов.
alt text http://www.gexperts.org/tour/project%20dependencies.png


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

Ответ 4

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

Марк

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

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

Ответ 9

Существует (довольно старая) утилита, называемая 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

binary: http://www.nexusdb.com/downloads/USGParse/USGParse.zip