Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 19:39   #1
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
Вопрос Как скомпилировать с dcu?

Как скомпилировать с dcu?

Есть проект в котором были изменены 2 подключенных модуля pas, но остались 2 файла dcu старой версии.
Нужно чтобы в exe вошёл код старых версий pas.
При попытке компиляции старые dcu просто перезаписываются новым кодом и в exe компилируется новый код.

Можно ли dcu использовать без pas? И как это сделать?.
Jupiter вне форума Ответить с цитированием
Старый 10.12.2009, 20:47   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

убери pas. оставь только dcu
Voody вне форума Ответить с цитированием
Старый 10.12.2009, 20:47   #3
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

положи dcu туда где сейчас pas
а сами pas файлы убери подальше чтоб Delphi их не видела
s.Creator вне форума Ответить с цитированием
Старый 10.12.2009, 22:38   #4
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию

Файлы pas убрал, в папке с проектом оставил только dcu, просто открыл проект и нажал компилировать.
Компилятор всё равно начал всё проверять и наткнулся на 2 недостающих модуля:

uses
Forms, SysUtils, UsesBN1, UsesBN2;
// здесь они объявлены.

Говорит
[Pascal Fatal Error] Utils.pas(32): F2063 Could not compile used unit 'usesbn1 .pas'

Так как файлы pas этих модулей я убрал, ошибку можно исправить только удалив в объявлении и
в этом модуле все функции описанные в тех модулях.

Может как- то можно настроить компилятор, чтобы он не проверял и не искал все модули, а использовал готовые dcu?
Jupiter вне форума Ответить с цитированием
Старый 10.12.2009, 23:21   #5
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Сейчас попробовал (Delphi 7):
убрал и pas и dcu
выдало ошибку
Цитата:
[Fatal Error] Project5.dpr(6): File not found: 'Unit1.dcu'
Добавил dcu - скомпилировался без ошибки.
изменил в другом модуле параметры вызова функции из dcu
Цитата:
[Error] Unit3.pas(549): Too many actual parameters
[Fatal Error] Project5.dpr(6): Could not compile used unit 'Unit3.pas'
Могу предположить что твои dcu видит компилятор только в них идет обращение к другим модулям неправильное
Т.е. dcu старые а обращаются еще к каким-то уже новым функциям.

При попытке удаления модуля формы пришлось оставить dfm
без него не хочет
s.Creator вне форума Ответить с цитированием
Старый 11.12.2009, 16:17   #6
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию

Решил тоже провести эксперимент: сделал тоже что и s.Creator.
Старые UsesBN1.dcu и UsesBN2.dcu убрал из папки проекта, а новые UsesBN1.pas и UsesBN2.pas добавил. После компиляции компилятор создал новые UsesBN1.dcu и UsesBN2.dcu.
После этого файлы UsesBN1.pas и UsesBN2.pas убрал из папки проекта и снова попытался скомпилировать- компиляция прошла успешно даже без файлов pas, и был создан новый exe.

Вывод:
Компилятор может компилировать проект без модулей pas, пользуясь только их dcu.

Но когда я подставляю ему старые dcu, он не хочет их компилировать а просит pas, Почему???

Раньше я тоже использовал Delphi 7 а теперь перешёл на Delphi 2006. И старые dcu были созданы Delphi 7, может старые dcu нельзя использовать изза разницы в версиях Delphi?

Можно ли как то заставить Delphi использовать старые dcu?

Прекращайте ненужное цитирование предыдущих сообщений!

Последний раз редактировалось mihali4; 11.12.2009 в 17:15.
Jupiter вне форума Ответить с цитированием
Старый 11.12.2009, 18:43   #7
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Раньше я тоже использовал Delphi 7 а теперь перешёл на Delphi 2006
А вот в это похоже и проблема. практически все модули обращаются к библиотечным dcu а они зависят от версий Delphi.
Именно поэтому ( думаю ) если библиотеки компонентов распространяют в dcu то компилируют под каждую версию.
С текстовыми pas файлами проблем меньше, так что вряд ли удастся.
Если вдруг получится - сообщи.
s.Creator вне форума Ответить с цитированием
Старый 11.12.2009, 20:46   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Если вдруг получится - сообщи.
можно даже не пытаться.
Версии DCU (так же, как и ранее TPU) - строго компиляторно-зависимы. и не подходят от одной версии Дельфи к другой (ни снизу вверх, ни сверху вниз). Поэтому или искать PAS и компилировать под Delphi 2006, либо откатывайтесь на Delphi7. третьего не дано.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скомпилировать прогу, если у меня есть только *.cpp файл? TwiX Общие вопросы C/C++ 4 13.11.2009 21:13
Как установить dcu nusik Компоненты Delphi 1 23.05.2009 14:56
Как скомпилировать программу так, чтобы "все было включено" grenles Общие вопросы Delphi 4 31.07.2008 17:05
как переписать код программы с книги, потом сохранить и скомпилировать? Graff_1 Помощь студентам 3 14.05.2008 16:21
Как правильно скомпилировать программу ГОСЕАН БД в Delphi 14 26.07.2007 13:18