Форум: "Основная";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
Вниз
Компиляция в *.dcu Найти похожие ветки
← →
Top Gun (2003-04-07 19:41) [0]У меня набралось порядочно функций и процедур, которые я использую во многих своих проектах.
Я вынес их в отдельный модуль - util.pas.
Как подключать модуль ? Если писать просто в uses имя модуля "util" - то он, естесственно, не находит util.dcu
Если добавлять в проект (Project->Add to project), то пишется строка видаUtil in "Util.pas";
При этом при компиляции проекта как понимаю компилируется и модуль util.pas (кстати, он каждый раз компилируется или только однажды?). Все вроде ок.
Но логика такова, что в самом util используются функции, которые обычным приложениям не нужны. Соответственно, есть другой модуль, что-то типа UtilForUtil.pas который используется ТОЛЬКО самим Util. Вот тут и проблемы с подключением модуля. Сам UtilForUtil по идее нужно подключать только в Util. Но как его подключишь, если он не скомпилирован ? Util компилируется вместе с приложением. А UtilForUtil как бы должен компилироваться вместе с Util. Но компилятор выдает ошибку, что не найден UtilForUtil.dcu. Приходится к какому-нибудь (по фигу какому) приложению подключать UtilForUtil и скомпилировать его, чтобы сам UtilForUtil скомпилировался в dcu. А уж потом этот dcu использовать.
Так вот. Что я хотел сказать, уж извините за сбивчивый рассказ. Если я просто хочу скомпилировать модуль pas в dcu, неужели для этого надо обязательно его прикреплять к фиктивному приложению, чтобы при компиляции этого приложения скомпилировался и сам модуль в dcu ?
Если открыть просто модуль, то естесственно никакие Build и Run недоступны.
← →
malkolinge(fp) (2003-04-07 20:24) [1]
> Я вынес их в отдельный модуль - util.pas.
Правильно сделал
> При этом при компиляции проекта как понимаю компилируется
> и модуль util.pas (кстати, он каждый раз компилируется или
> только однажды?). Все вроде ок.
Однажды и перекомпилируеться в случае изменения автоматически
Дальше читать не могу...Проще тебе лдружище DLL сделать.
А если хочешь совет - пиши просто uses Utils и все..Делфя за тебя даже функции ненужные из исполняемого файла выкинет
← →
Top Gun (2003-04-07 22:03) [2]Объясните дальше. Этот вопрос меня мучает. Неужели борландовцы не предусмотрели просто компиляцию юнита в dcu ? И надо таким геморройным способом делать ?
← →
Иван Шихалев (2003-04-07 22:11) [3]Борландовцы все предусмотрели, а потом зачем-то убрали из IDE. Можешь скомпилировать модуль из командной строки с помощью dcc32.exe
← →
Palladin (2003-04-07 23:06) [4]ну а в пути поиска добавить конечно путь к util.pas религия не позволяет?
← →
Top Gun (2003-04-08 15:51) [5]Иван Шихалев, а в какой Дельфе это было в IDE ?
← →
Иван Шихалев (2003-04-08 16:17) [6]В Delphi, насколько я помню, и не было, а вот в Borland Pascal можно было спокойно компилировать модуль сам по себе из IDE.
← →
MityaP (2003-04-08 16:32) [7]по моему ты дурью маешься...
Если ты вносишь изменения и Util и в UtilForUtil, то полюбому надо оба компилить.. И если в проекте надо действительно изменять и тот и другой - то полюбому надо оба к проекту цеплять...
А если util не изменяется, а UtilForUtil изменятся, достаточно util.dcu под боком иметь, второй добавлять...
И вообще, если функции из util не изменяешь, то дейтв, как говорит malkolinge(fp), сделай из него dll...
← →
Top Gun (2003-04-08 18:41) [8]>А если хочешь совет - пиши просто uses Utils и все
Я же кажется писал - тогда компилятор сообщает, что не найден util.dcu (или соответственно UtilForUtil.dcu)
>ну а в пути поиска добавить конечно путь к util.pas религия не позволяет?
А это здесь при чем ? Ведь dcu не найден, а не pas
Ну собственно Иван Шихалев все разъяснил.
*********************************************************
Возник другой вопрос. А можно в Дельфе сделать неявное подключение модуля ?
Ну то есть, приложение подключает Unit1. В самом Unit1 подключается Unit2. Так вот можно просто в приложении подключать Unit1 и использовать функции из Unit2? Ведь подключенный Unit1 использует Unit2, все равно от скомпилируется в exe.
Просто возможна достаточно сложная иерархия модулей, и чтобы не подключать все это каждый раз в приложение можно просто подключать какой-нибудь MainUnit, в котором уже подключено все остальное.
← →
MityaP (2003-04-08 18:59) [9]Если не найден какой-то модуль, он всегда пишет что ненайдет [имя модуля].dcu //!!!\\ А на pas - да плевать Дельфи хотел, что pas... он все-равно пишет dcu...
Он шарит сначала util.pas, если такой не найден - ищет util.dcu => не найден всё-таки util.dcu.... (последний файл в списке поиска)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c