2012-07-22 3 views
1

У меня нет опыта работы с dll прямо сейчас. Мое приложение состоит из нескольких программ с несколькими формами и единицами. Теперь я хочу поставить их «вместе». Это означает, что я хочу иметь один вход, который будет вызывать эти отдельные программы из dll.Delphi Dll - более одной формы/единицы в одной dll

Поскольку у программ есть несколько единиц, мой вопрос в том, можно ли поставить более одной формы/единицы в одну DLL. (полная программа) Тогда я мог бы назвать Программы как DLL.

До сих пор программы выполнялись отдельно, между ними нет зависимостей. Внутри них есть каскадные формы (Form1 вызывает Form2 или form3 или ...). Если невозможно объединить их все в одну dll, могу ли я каскадировать DLL (т. Е. Вызвать dll 1 dll1 вызывает dll 2)?

Я использую Delphi 2007/XE с Firebird 2.x через IBDAC

ТИА

+1

Рассмотрите возможность использования пакетов 'bpl' вместо dll. Вы также можете создавать пакеты времени разработки с вашими компонентами и устанавливать их в свою среду IDE. Узнайте больше о bpls здесь: http://edn.embarcadero.com/article/27178 – Adam

+0

Насколько я знаю, bpl и dll (внутри мира дельфи) как-то взаимозаменяемы в этом смысле, что после принятия решения, какие из них Чтобы использовать, я могу сделать то же самое с ними? (кроме функций вызова с других языков) –

+0

Вам не нужны DLL. Просто включите весь код в одну программу. –

ответ

1

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

+0

Итак, DLL похожа на любой другой проект? Начиная с dll, я мог бы создать целое приложение в dll? За исключением того, что мне нужно запустить приложение? –

+0

Да, пользователь, точно. Вы можете экспортировать функцию, и тогда приложение-хозяин может вызвать ее. (Например, это язык программирования Python.) Для ваших целей BPL, вероятно, будет более подходящим, поскольку он упростит совместное использование функций, связанных с Delphi, между хост-программой и внешним модулем, но помните, что вопрос, который вы спросил о возможностях DLL, а не о лучшем способе выполнить вашу конкретную задачу. –

2

Помните, что экземпляр объекта Application в DLL и EXE будет отдельным. Вы должны передать Application.Handle в свою DLL из Exe и установить его. В противном случае вы получите отдельную кнопку приложения на панели задач Windows.

+0

Спасибо, не знал бы этого. –

1

Если у вас нет особых причин для использования DLL (например, если вы можете их называть или записывать на других языках программирования), вам следует вместо этого использовать пакеты.

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

Смежные вопросы