Форум: "Начинающим";
Текущий архив: 2010.12.19;
Скачать: [xml.tar.bz2];
ВнизПодключение неиспользуемых юнитов Найти похожие ветки
← →
yurikon (2010-09-17 21:13) [0]Добрый день!
Столкнулся вот с чем: кладешь на форму компоненту, потом удаляешь ее. В uses остается юнит, в котором она прописана и размер exe файла увеличивается.
Может есть опция какая для компилятора, чтобы он не тащил что не надо?
С уважением, Юрий.
← →
Ega23 © (2010-09-17 22:12) [1]
> и размер exe файла увеличивается
Разве? И после ребилда (не Compile, а именно Build)?
← →
Плохиш © (2010-09-18 00:09) [2]Увеличивается на размер кода выполняемого в секциях иничиализации и финализации.
> Может есть опция какая для компилятора, чтобы он не тащил
> что не надо?
Мелко плаваешь, требуй кнопку для написания программы.
← →
Германн © (2010-09-18 02:13) [3]
> Столкнулся вот с чем: кладешь на форму компоненту, потом
> удаляешь ее. В uses остается юнит
Это только поначалу. Потом бездумное кидание компонент на форму с целью узнать "А что это такое" уходит из привычки.
P.S.
Компилятор всё-таки не ИИ. Не надо от него ждать 100%-ной "защиты от дурака".
← →
Yurikon (2010-09-19 06:12) [4]Ребилд не помогает. Дело даже не в бездумном кидании компонент на форму. Такой пример. Захотелось использовать константы цвета ( clRed ...) ссылка на qgraphics приводит к увеличение ехешнника на 700 кб. Вот тебе и константы.
С уважением.
← →
Anatoly Podgoretsky © (2010-09-19 08:29) [5]> Yurikon (19.09.2010 06:12:04) [4]
Убирай ссылки из программы, иначе подобное из-за intialization будет. А это
уже не константы, а код.
← →
Юрий Зотов © (2010-09-19 09:46) [6]А почему Qgraphics, если в топике прописано XP?
Только что проверил (именно D7, XP):
1. Пустая форма, в uses только Forms - размер EXE 423936 байт.
2. Подключил Graphics и в OnCreate написал Color:=clRed - размер EXE 423936 байт.
То есть, размер не увеличился ни на один байт. Что и неудивительно, потому что Graphics подключается в ОБОИХ случаях (в первом через Forms). А вот при подключении QGraphics реально добавляется НОВЫЙ модуль (в данном случае абсолютно ненужный) и размер возрастает до 668672 байт (то есть, увеличивается на 244736 байта).
Выходит, дело было не в бобине? Замените QGraphics на просто Graphics и перебилдите проект.
PS
При подключении к программе нового модуля ее размер возрастает не только за счет его кода инициализации/финализации, а еще и за счет ресурсов, используемых этим модулем. Кроме того, через этот модуль к программе могут подтягиваться еще и другие модули, каждый со своим кодом и ресурсами - и т.д. по цепочке.
← →
Юрий Зотов © (2010-09-19 09:50) [7]PPS
А если программа содержит run-time пакет, то этот пакет всегда будет компилироваться ПОЛНОСТЬЮ, независимо от того, что именно из него реально в программе использовано.
← →
_Юрий (2010-09-19 15:23) [8]Особенно смешно бывает, когда DexExpress сглючивает и пихает в uses все свои скины (игнорируя свои собственные настройки из SkinCfg) при сохранении юнита с формой, и размер сборки внезапно увеличивается на пару десятков метров.
Вообще, механизм очистки от ненужных юнитов надо было предусмотреть
← →
Игорь Шевченко © (2010-09-19 16:13) [9]
> Вообще, механизм очистки от ненужных юнитов надо было предусмотреть
критерий ненужного юнита в студию
← →
_Юрий (2010-09-19 18:14) [10]
> критерий ненужного юнита в студию
>
Модуль не добавлен в проект, никакие типы\константы\функции из него в данном модуле не используются.
И разумеется переспросить у пользователя.
То есть сделать в виде отдельной команды в IDE, автоматически ничего не чистить, вывести список "подозрительных", и спросить у пользователя - что с ними делать.
Думаю, такое было бы полезно. Если модуль подключен из-за ресурса, или из-за находящегося в инициализации кода, то его правильнее добавить в сам проект, а не в какое-то другое место.
← →
Amoeba_ (2010-09-19 18:31) [11]
> То есть сделать в виде отдельной команды в IDE, автоматически
> ничего не чистить, вывести список "подозрительных", и спросить
> у пользователя - что с ними делать.
> Думаю, такое было бы полезно.
Уже давно реализовано в виде отдельной "примочки":
http://www.peganza.com/products_icarus.htm
ICARUS parses Delphi or Borland Pascal source code and generates a Uses Report. This report will help you remove unneeded units from your uses lists. You will also know which units that can be moved from the interface uses list to the implementation uses list.
← →
Игорь Шевченко © (2010-09-19 19:26) [12]
> Если модуль подключен из-за ресурса, или из-за находящегося
> в инициализации кода, то его правильнее добавить в сам проект,
> а не в какое-то другое место.
Согласен, это верное решение
← →
_Юрий (2010-09-19 21:01) [13]
> Amoeba_ (19.09.10 18:31) [11]
поставил, запустил, натравил на проект:
Error: Circular reference between IBDatabase and IB
Вот честное слово, не правил эти модули.
Увы :-(
И директивы, объявленные в самом модуле, эта машинка игнорирует.
← →
yurikon (2010-09-20 13:33) [14]Добрый день!
Можно и без примочки. Просто удаляешь все юниты из uses. Начинаешь компилировать - большую часть делфи сам прописывает, остальное добавляешь.
← →
Anatoly Podgoretsky © (2010-09-20 13:40) [15]> yurikon (20.09.2010 13:33:14) [14]
Удалять не надо, надо замаскировать
← →
brother © (2010-09-21 12:58) [16]> Удалять не надо, надо замаскировать
{}
?
← →
Вик (2010-09-22 17:31) [17]В CnPack есть примочка "Очистка модулей..."
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.12.19;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c