Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Опять про размер проги
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
Баламут
Привет всем!

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

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

Также попробуйте упаковывать полученный исполняемый файл или ДЛЛ с помощью паковщиков, что значительно снизит их размер.
Баламут
Э, нет! Меня как раз интересует, почему так резко снизился размер проги. А использовать упаковщики вообще сомнительное счастье. В ОЗУ -то программа все-равно примет свой начальный размер. А на диске сейчас жалеть место даже неудобно как-то smile.gif . А вот про настройки компилятора хотелось бы по-подробнее, если можно. Уж больно не хочется, что бы на чужой машине прога стала ругаться, что ей чего-то не хватает.
zubr
Баламут
Как только в проект добавляете модуль Forms, так сразу размер программы увеличивается на 300 kB, причем не имеет значение dll-ка это, или консоль (хотя зачем в консоли Forms?). Выход: окна создавать на API, но очень гиморно. Еще с помощью директив компилятора можно в том же Forms сделать, чтобы компилировалось только то что вам нужно, но опять таки это очень гиморно, да и не гарантия, что это корректно получится (кстати такой способ реализован в кмопонентах KOL).
Баламут
Похоже я не совсем ясно сформулировал вопрос. Меня не удивляет размер проги в 300K. Я прекрасно знаю, что это нормально. Вопрос как раз об обратном эффекте. Почему размер уменьшился до 30 килобайт? Форма есть как в экзешнике, так и в DLL. Я точно знаю, что где-то в настройках компилятору можно указать статическое или динамическое использование библиотек, т.е. линковать их в исполняемый файл или нет. Настроек я вроде не менял, но все-таки хочется знать, где это можно сделать.
Barmutik
Статическое или динамическое линкование никак не скажется на размере...

Вам уже совсершено верно указал zubr, чтразмер очень сильно зависит от количества включённых модулей... ищите что Вы включали и отключили ...
????
Для: Баламут
Создаём новый проект. Компилируем - 370 176 байт. Projects -> Options -> Packages и пстрынькаем на Build with runtime packages - размер 16 896 байт. Зависит от того, что вставленно в поле, но надо это всё таскать с прогой.
Баламут
Вот теперь все нормально. Спаибо. Правда возникли другие проблемы, но разберемся! wink.gif
Poseidon
Цитата(???? @ 28:07:2005, 16:34 )
Projects -> Options -> Packages и пстрынькаем на Build with runtime packages
*
Ну и что? Теперь прога не запустится на компе, на катором не установлена Дельфя. Советчики... tongue.gif
Barmutik
Почему это не запустится? Достаточно просто с собой взять требуемые пэкэджи и всё!
Poseidon
И в итоге общий размер проги, со всеми пакетами будет завен тем же 300к
Barmutik
Это да .. но если у Вам есть несколько прогграмм использующих одни и теже пакеты .. то в итоге можно здорово сэкономить на суммарном объёме...
simon
Не помню, как в Дельфях, в Билдере еще одна фича присутствует:
[Project->Options->Linker->Linking->Use dinamik RTL] (runtime library)

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

Можно поподробней? Я ж так понял, это не про RAR?
Баламут
Конечно, паковать можно. Например тем же ASPack. Вот только смысл? На диске программа действительно будет занимать меньше места. Но в ОЗУ она же все равно будет распакована и займет прежний размер!
Barmutik
Но если Вам надо сократить размер дистрибутива, для скачки к примеру, то паковщики это отличный выход!
mike.dld
KOL тут уже упоминали, почему бы его не использовать? Если "давно пишу на Делфи" - грех было не попробовать.
Barmutik
Любые сторонние библиотеки увеличивают процент нестабильной работы программы в геометрической прогрессии .. исключая конечно самые массовые и хорошо оттестированные.
Poseidon
Цитата(mike.dld @ 17:08:2005, 14:07 )
KOL тут уже упоминали, почему бы его не использовать? Если "давно пишу на Делфи" - грех было не попробовать.
*
Ну я давно пишу на Delphi. Но от КОЛ отказываюсь. Почему, уже сказал Barmutik. Так что лучший выриант уменшить размер проги - это отказаться от VCL и написать ее на чистом WinAPI. То, что занимало 500 Мб, будет занимать 30.
Barmutik
Тогда уж не зачем писать на Delphi.... уж лучше на С++
Баламут
Писать на С?!! Нет уж, увольте. По мне так проще на ассемблере. По крайней мере код прост и понятен. Нет, писать на С++ по DOS было конечно просто здорово. Но после того, за за реализацию компилятора взялись мелкомягкие... Использовать API все-таки лучше в связке с асмом. И в обратном меня уже никто не переубедит.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2009 IPS, Inc.