Опять про размер проги

  • Автор темы Баламут
  • Дата начала
Б

Баламут

Привет всем!

Впервые на вашем форуме. Неплохо. Такой вопрос.

При обычном создании приложения с двумя формами размер exe-шника получился около 400М. Я написал MDI-приложение, где дочерние формы хранятся в DLL. При этом размер проги стал меньше 30К! А почему? Создается такое впечатление, что много остается за бортом. А как тогда сказать компилятору, чтобы все ложил в кучу? Вроде давно пишу на Делфи, но вот с настройками компилятора как-то не заморачивался. Видимо зря. Пишу на Delphi 6.
 
B

Barmutik

Рзамер очень сильно зависит от объёма подключённых модулей и опций компилятора.

Также попробуйте упаковывать полученный исполняемый файл или ДЛЛ с помощью паковщиков, что значительно снизит их размер.
 
Б

Баламут

Э, нет! Меня как раз интересует, почему так резко снизился размер проги. А использовать упаковщики вообще сомнительное счастье. В ОЗУ -то программа все-равно примет свой начальный размер. А на диске сейчас жалеть место даже неудобно как-то :lol: . А вот про настройки компилятора хотелось бы по-подробнее, если можно. Уж больно не хочется, что бы на чужой машине прога стала ругаться, что ей чего-то не хватает.
 
Z

zubr

Баламут
Как только в проект добавляете модуль Forms, так сразу размер программы увеличивается на 300 kB, причем не имеет значение dll-ка это, или консоль (хотя зачем в консоли Forms?). Выход: окна создавать на API, но очень гиморно. Еще с помощью директив компилятора можно в том же Forms сделать, чтобы компилировалось только то что вам нужно, но опять таки это очень гиморно, да и не гарантия, что это корректно получится (кстати такой способ реализован в кмопонентах KOL).
 
Б

Баламут

Похоже я не совсем ясно сформулировал вопрос. Меня не удивляет размер проги в 300K. Я прекрасно знаю, что это нормально. Вопрос как раз об обратном эффекте. Почему размер уменьшился до 30 килобайт? Форма есть как в экзешнике, так и в DLL. Я точно знаю, что где-то в настройках компилятору можно указать статическое или динамическое использование библиотек, т.е. линковать их в исполняемый файл или нет. Настроек я вроде не менял, но все-таки хочется знать, где это можно сделать.
 
B

Barmutik

Статическое или динамическое линкование никак не скажется на размере...

Вам уже совсершено верно указал zubr, чтразмер очень сильно зависит от количества включённых модулей... ищите что Вы включали и отключили ...
 
?

????

Для: Баламут
Создаём новый проект. Компилируем - 370 176 байт. Projects -> Options -> Packages и пстрынькаем на Build with runtime packages - размер 16 896 байт. Зависит от того, что вставленно в поле, но надо это всё таскать с прогой.
 
Б

Баламут

Вот теперь все нормально. Спаибо. Правда возникли другие проблемы, но разберемся! ;)
 
P

Poseidon

<!--QuoteBegin-????+28:07:2005, 16:34 -->
<span class="vbquote">(???? @ 28:07:2005, 16:34 )</span><!--QuoteEBegin-->Projects -> Options -> Packages и пстрынькаем на Build with runtime packages
[snapback]22691" rel="nofollow" target="_blank[/snapback]​
[/quote] Ну и что? Теперь прога не запустится на компе, на катором не установлена Дельфя. Советчики... :p
 
B

Barmutik

Почему это не запустится? Достаточно просто с собой взять требуемые пэкэджи и всё!
 
P

Poseidon

И в итоге общий размер проги, со всеми пакетами будет завен тем же 300к
 
B

Barmutik

Это да .. но если у Вам есть несколько прогграмм использующих одни и теже пакеты .. то в итоге можно здорово сэкономить на суммарном объёме...
 
S

simon

Не помню, как в Дельфях, в Билдере еще одна фича присутствует:
[Project->Options->Linker->Linking->Use dinamik RTL] (runtime library)

Для: Barmutik
Также попробуйте упаковывать полученный исполняемый файл или ДЛЛ с помощью паковщиков, что значительно снизит их размер.
Можно поподробней? Я ж так понял, это не про RAR?
 
Б

Баламут

Конечно, паковать можно. Например тем же ASPack. Вот только смысл? На диске программа действительно будет занимать меньше места. Но в ОЗУ она же все равно будет распакована и займет прежний размер!
 
B

Barmutik

Но если Вам надо сократить размер дистрибутива, для скачки к примеру, то паковщики это отличный выход!
 
M

mike.dld

KOL тут уже упоминали, почему бы его не использовать? Если "давно пишу на Делфи" - грех было не попробовать.
 
B

Barmutik

Любые сторонние библиотеки увеличивают процент нестабильной работы программы в геометрической прогрессии .. исключая конечно самые массовые и хорошо оттестированные.
 
P

Poseidon

<!--QuoteBegin-mike.dld+17:08:2005, 14:07 -->
<span class="vbquote">(mike.dld @ 17:08:2005, 14:07 )</span><!--QuoteEBegin-->KOL тут уже упоминали, почему бы его не использовать? Если "давно пишу на Делфи" - грех было не попробовать.
[snapback]23601" rel="nofollow" target="_blank[/snapback]​
[/quote] Ну я давно пишу на Delphi. Но от КОЛ отказываюсь. Почему, уже сказал Barmutik. Так что лучший выриант уменшить размер проги - это отказаться от VCL и написать ее на чистом WinAPI. То, что занимало 500 Мб, будет занимать 30.
 
B

Barmutik

Тогда уж не зачем писать на Delphi.... уж лучше на С++
 
Б

Баламут

Писать на С?!! Нет уж, увольте. По мне так проще на ассемблере. По крайней мере код прост и понятен. Нет, писать на С++ по DOS было конечно просто здорово. Но после того, за за реализацию компилятора взялись мелкомягкие... Использовать API все-таки лучше в связке с асмом. И в обратном меня уже никто не переубедит.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!