Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.004 c
15-1284014875
Игорь
2010-09-09 10:47
2010.12.19
У кого стоит D2100


11-1226657574
Xenus
2008-11-14 13:12
2010.12.19
Timage или что то подобное


3-1249649283
aleks-ran
2009-08-07 16:48
2010.12.19
Параметры и mysql-connector-odbc-5.1.5


11-1226307025
Dy1
2008-11-10 11:50
2010.12.19
работа с Юникодом


15-1283258914
pasha_golub
2010-08-31 16:48
2010.12.19
Киев, 13 сентября 2010г., семинар Embarcadero





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский