Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.21;
Скачать: CL | DM;

Вниз

Компиляция в *.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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
1-67375
Silver_
2003-04-03 15:19
2003.04.21
Object TreeView


14-67498
Wild Wizard
2003-04-03 15:34
2003.04.21
К вопросу о взаимоотношениях с людьми...


4-67649
MorfeyCool
2003-02-20 13:30
2003.04.21
Как контролировать время ?


11-67193
Doctor Deejay
2002-07-13 10:54
2003.04.21
Когда будет открыт раздел с компонентами КОЛ на мастаке?


1-67316
anbezr
2003-04-08 10:26
2003.04.21
что делать с дин. массивом про закрытии приложения