Как получить список модулей в скомпилированном пакете Delphi (файл .dcp) - PullRequest
4 голосов
/ 15 января 2009

Есть ли способ перечислить, какие единицы / классы находятся в скомпилированном пакете Delphi?

Ответы [ 4 ]

3 голосов
/ 15 января 2009

Вы смотрели на утилиту TDUMP, которая поставляется с Delphi 7? Bpl - это просто необычная DLL, поэтому вы можете перечислить ее экспортируемые функции:

например.

"C: \ Program Files \ Borland \ Delphi7 \ Bin \ TDUMP.EXE" AFWRTL_RD7.bpl

Turbo Dump Версия 5.0.16.12 Copyright (c) 1988, 2000 Inprise Corporation

              Display of File AFWRTL_RD7.BPL

. , .

Экспорт из AFWRTL_RD7.bpl

91 экспортированных имен, 91 экспортных адресов. Порядковая база 1.

...

000046B4   31 000A __fastcall Fgint::Base2StringToFGInt(System::AnsiString, Fgint::TFGInt&)

...

Если вы посмотрите на экспортированные функции, кажется, что перед именем функции стоит префикс с именем устройства или зависимого пакета, например, Fgint :: Base2StringToFGInt является функцией Base2StringToFGInt в модуле Fgint.pas.

Кроме того, обратите внимание на утилиту depen.exe, поставляемую с Windows Resource Kit. Это обеспечивает графический интерфейс для просмотра содержимого DLL (или BPL).

См

http://www.microsoft.com/downloads/details.aspx?FamilyID=49ae8576-9bb9-4126-9761-ba8011fabf38&displaylang=en

для более подробной информации.

Винс

2 голосов
/ 15 января 2009

Вы можете создать новый пакет, добавить свой .dcp в его предложение require, добавить в него новый модуль и использовать завершение кода в предложении использования - он покажет вам все доступные модули во всех требуемых пакетах. Если ваш .dcp является единственным обязательным пакетом, и вы настроили его на отображение отсортированного по объему (щелкните правой кнопкой мыши в раскрывающемся списке), то единицы измерения из вашего .dcp должны быть сверху.

Я не уверен, работает ли это уже в Delphi 7. Работает в Delphi 2007.

0 голосов
/ 15 января 2009

JCL"использует эксперт" может многое показать прямо в IDE.

0 голосов
/ 15 января 2009

Кроме того, чтобы спросить разработчика или прочитать документацию, ответ - нет.

...