Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
объясните мне, dcu - это скомпилированные модули, а зачем они нужны, ведь есть файл exe?
3 сен 08, 19:33    [6143882]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62901
Ну например, что бы создать этот ехе, близко к понятию OBJ

--
www.podgoretsky.com
3 сен 08, 19:43    [6143910]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
а где можно достать подробную информацию о компиляции проекта Delphi?
3 сен 08, 19:57    [6143937]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
MMM_Corp


Форумом ошибся, здесь про делфи говорят,
а с dcu - можно слепить компоненты или программу в целом, напр. их удобно использовать когда не хочеш откривать исходный код компонента или модуля, что и делают разраби даже самой IDE, ну и также они как бы полуфабрикат для сборки, это значит что уже откомпилированные модуля опять не будут компилироваться, если в них ничего не трогали, что очень существенно поднимает скорость компиляции.



Про экономию времени при компиляции я поняла, а вот про то, что можно слепить компоненты или программу, нет. Можешь объяснить это по-подробнее?
3 сен 08, 20:51    [6144016]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
Я хочу повторить свой вопрос, можно ли достать подробную информацию о компиляции проекта Delphi?
3 сен 08, 21:27    [6144060]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
MMM_Corp
Member

Откуда: Тернопіль, Україна
Сообщений: 1887
moon7
MMM_Corp


Форумом ошибся, здесь про делфи говорят,
а с dcu - можно слепить компоненты или программу в целом, напр. их удобно использовать когда не хочеш откривать исходный код компонента или модуля, что и делают разраби даже самой IDE, ну и также они как бы полуфабрикат для сборки, это значит что уже откомпилированные модуля опять не будут компилироваться, если в них ничего не трогали, что очень существенно поднимает скорость компиляции.



Про экономию времени при компиляции я поняла, а вот про то, что можно слепить компоненты или программу, нет. Можешь объяснить это по-подробнее?


Могу, смотрим,с чего в делфи состоит компонент, я конечно грубу скажу, но гдето так:
1. dpk - пакет компонента, думаю эта штуковина знакомая
2. в dpk прописаны модуля (они могут бить как в pas так и в dcu виде), всеравно они сведутся к dcu, тоесть pas становится dcu при любом раскладе.
3. таким образом у нас получается что имея pas/dcu можно использовать как модуль, оно так и есть, напр. модуль system - существует только в dcu виде, но вы даже не замечаете разницы, он просто подключается и компилируется, как был бы это обычный pas. (кстати это не сложно проверить, только нужно включить фантазию)
4. таким образом ми получаем гибкость, хотим похвастаться исходниками своих компонентов, поставляем pas-файлы, жмемся исходниками поставляем только dcu-файлы, или сразу готовые BPL-ки, это уже как удобней.

Как точно компилируется программа?
Попытаюсь обьяснить, я не эксперт в данном вопросе, но думаю с общей помощью ми вместе это выясним, итак начну:
1. Составляется и проверяется наличные всех необходимых модулей (pas, dcu, bpl - файлы), если все на месте см. п.2.
2. Компилируются все модуля по порядку (создаются dcu-файлы, где их еще нету)
3. Если все в порядке, то согласно map-файлу (незнаю как точно обьяснить) линковщик склеивает в готовую программу.

ну гдето так.

П.С. Простите за тупой вопрос, а для чего Вам эта информация?
3 сен 08, 23:04    [6144271]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 6734
Стоит еще добавить что
1) pas не компилируется в dcu, если дата создания dcu позже, чем pas
2) pas всегда компилируется в dcu, если выбран не Compile Project, а Build Project.

Еще есть такая тонкость
unit Unit1;

interface

uses Unit2
........................
  // Первая группа ошибок
........................

implementation
 
uses Unit3;
........................
  // Вторая группа ошибок
........................
end.
Компилятор обнаружит вначале ошибки в модуле Unit2. После их исправления обнаружит первую группу, после их исправления выведет ошибки в модуле Unit3 и только после их исправления обнаружит ошибки во второй группе.

Ошибки компиляции бывают фатальными и нефатальными. При обнаружении фатальной ошибки компиляция проекта останавливается. При нефатальной - продолжается.

Наличие нефатальной ошибки при компиляции модуля приводит к появлению фатальной ошибки по окончании компиляции модуля. Такой механизм позволяет за минимальное число компиляций найти все ошибки в модуле

С уважением, Vasilisk
3 сен 08, 23:38    [6144343]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
MMM_Corp


П.С. Простите за тупой вопрос, а для чего Вам эта информация?


Вопрос не тупой), а информацию ищу для себя, много неясных моментов возникает при чтении литературы. За ответы спасибо, они для меня кое-что прояснили)
6 сен 08, 14:32    [6154931]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
_Vasilisk_
Стоит еще добавить что
1) pas не компилируется в dcu, если дата создания dcu позже, чем pas
2) pas всегда компилируется в dcu, если выбран не Compile Project, а Build Project.

Еще есть такая тонкость
unit Unit1;

interface

uses Unit2
........................
  // Первая группа ошибок
........................

implementation
 
uses Unit3;
........................
  // Вторая группа ошибок
........................
end.
Компилятор обнаружит вначале ошибки в модуле Unit2. После их исправления обнаружит первую группу, после их исправления выведет ошибки в модуле Unit3 и только после их исправления обнаружит ошибки во второй группе.

Ошибки компиляции бывают фатальными и нефатальными. При обнаружении фатальной ошибки компиляция проекта останавливается. При нефатальной - продолжается.

Наличие нефатальной ошибки при компиляции модуля приводит к появлению фатальной ошибки по окончании компиляции модуля. Такой механизм позволяет за минимальное число компиляций найти все ошибки в модуле

С уважением, Vasilisk


Спасибо за информацию.
6 сен 08, 14:42    [6154944]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
Конечно, хотелось бы почитать подробную литературу по этому вопросу.
6 сен 08, 14:44    [6154945]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
.... где описываются все тонкости и ньюансы.
6 сен 08, 14:45    [6154946]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62901
Вот подробнейшея информация от производителя, законченая.
Справка
The first time you build an application or a dynamically linkable library, the compiler produces a compiled unit (.dcu on Windows, and .dcu or .dpu on Linux) file for each new unit used in your project; all the .dcu/.dpu files in your project are then linked to create a single executable or shared library file. The first time you build a package, the compiler produces a file for each new unit contained in the package, and then creates both a .dcp and a package file. (For more information about libraries and packages, see Libraries and packages.) If you use the -GD switch, the linker generates a map file and a .drc file; the .drc file, which contains string resources, can be compiled into a resource file.

When you build a project, individual units are not recompiled unless their source (.pas) files have changed since the last compilation, their .dcu/.dpu files cannot be found, you explicitly tell the compiler to reprocess them, or the interface of the unit depends on another unit which has been changed. In fact, it is not necessary for a unit's source file to be present at all, as long as the compiler can find the compiled unit file and that unit has no dependencies on other units that have changed.


--
http://www.podgoretsky.com
6 сен 08, 14:48    [6154949]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
otistarda
Member

Откуда: Новосибирск
Сообщений: 334

Узнаю брата Колю (С)

[выдрано_из_контекста]
For more information about libraries and packages, see Libraries and packages
[/выдрано_из_контекста]

Posted via ActualForum NNTP Server 1.4

6 сен 08, 15:35    [6154985]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
mvb
Member

Откуда: Казань
Сообщений: 1239
MMM_Corp
напр. модуль system - существует только в dcu виде

неправда, он расположен в каталоге \Source\Rtl\Sys\
unit System; { Predefined constants, types, procedures, }
{ and functions (such as True, Integer, or }
{ Writeln) do not have actual declarations.}
{ Instead they are built into the compiler }
{ and are treated as if they were declared }
{ at the beginning of the System unit. }
.............
6 сен 08, 19:05    [6155165]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 6734
moon7
Конечно, хотелось бы почитать подробную литературу по этому вопросу.

Зачем? Какую цель Вы преследуете?
mvb
неправда, он расположен в каталоге \Source\Rtl\Sys\

Не совсем так. Он там не весь и многих функций в нем нет. Но правда ясли включить Build DCU, то все функции можно посмотереть (правда под хитрыми именами)
7 сен 08, 00:29    [6155482]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62901

Эти многие функции не являются функциями в прямом смысле этого слово это так
называемая магия компилятора, а часть системных функций решили реализовывать
через библиотеку SYSTEM, а не компилятором, но компилятор вкурсе о своей
секретной библиотеки, и знает когда делать серию вызовов inline (compiler
magic), а когда сделать эту серию через вызовы подпрограмм из SYSTEM.

--
http://www.podgoretsky.com

Posted via ActualForum NNTP Server 1.4

7 сен 08, 01:10    [6155498]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
moon7
Member

Откуда:
Сообщений: 15
_Vasilisk_
moon7
Конечно, хотелось бы почитать подробную литературу по этому вопросу.

Зачем? Какую цель Вы преследуете?


Просто заинтересовал этот вопрос, может эта информация секретная?
7 сен 08, 20:59    [6156190]     Ответить | Цитировать Сообщить модератору
 Re: зачем нужны файлы dcu?  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 52339

moon7> Просто заинтересовал этот вопрос, может эта информация секретная?

Нет. Некоторые ответы тебе уже привели.
Только вот зачем тебе это знание - непонятно.

Хочешь больше - почитай литературу, книги.


Posted via ActualForum NNTP Server 1.4

7 сен 08, 21:06    [6156198]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить
 
Лучший учебный центр Microsoft!
Новейшие курсы Microsoft SQL Server 2014!
ОЧЕНЬ привлекательные цены на курсы Oracle — от 26 тыс.руб.!
Все курсы по базам данных: Microsoft SQL Server 2014, Oracle, IBM DB2, Access, MySql