Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 674

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты! Подскажите пожалуйста как уменьшить размер исполняемого файла в delphi 2010. Я уже проделал с ним следующие:
- урезал до минимума rintime packages;
- {$SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED}.
Дело в том что у меня реально много форм (28) и два модуля еще, размер *.exe 15mb. Что делать??? помогите, прошу помощи!!!

6ruse Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 6ruse (статус: 1-ый класс)
Вопрос отправлен: 22 октября 2010, 18:27
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Ixer

Здравствуйте, novikov!
Возможно вам проще будет использовать UPX. Ета програма спецыально предназначена для уменьшения размера исполняэмых файлов. Подробнее читайте в итернете.

Ответ отправил: Ixer (статус: 2-ой класс)
Время отправки: 25 октября 2010, 16:34


Мини-форум вопроса

Всего сообщений: 18; последнее сообщение — 27 октября 2010, 11:08; участников в обсуждении: 4.
Roma_no_off

Roma_no_off (статус: Посетитель), 22 октября 2010, 19:09 [#1]:

А что вы туда напихали? У меня СУБД на D7 весит 8мб с БД (совсем мало записей) и всеми исходниками, а ехе-шник весит 1.1мб
Посчитал - вышло 20 форм и 10 модулей данных.
6ruse

6ruse (статус: 1-ый класс), 22 октября 2010, 20:02 [#2]:

Да по сути там нет ничего такого, что могло бы так размер файла увеличить. Сам в недоумении вот и обратился за помощью.
Roma_no_off

Roma_no_off (статус: Посетитель), 22 октября 2010, 23:04 [#3]:

Видимо, проблема не в том, как написано, а в том, где написано... Из последних разработок только NetBeans IDE радует...
6ruse

6ruse (статус: 1-ый класс), 23 октября 2010, 06:09 [#4]:

Ну так поделитесь как писать?
Вадим К

Вадим К (статус: Академик), 23 октября 2010, 16:46 [#5]:

А много ли на формах картинок? они очень увеличивают размеры.
Галочка "подтверждения прочтения" - вселенское зло.
6ruse

6ruse (статус: 1-ый класс), 23 октября 2010, 17:31 [#6]:

одна картинка.
Вадим К

Вадим К (статус: Академик), 23 октября 2010, 21:14 [#7]:

Нужно оценить ее размер. дело в том, что когда картинки попадают на форму в режиме проектирования, то они сохраняются очень не оптимально. Приблизительно в 2.2-2.5 раза больше, чем исходная картинка. Плюс ещё компиляторы иногда страдают тем, что не всегда корректно вычищают после старых картинок, но это бывает редко.
Также причиной может быть:
- большие файлы ресурсов
- использование сторонних компонентов, особенно различных "навороченных скинов" и подобное. Мне на 5 делфи удавалось "догнать" размер до 50-60 мб при двух-трех формах.
- может тупить компилятор. Для этого нужно удалить в папке с проектом файлы с расширением dcu и посмотреть размер файлов с расширением res и dfm на предмет больших. Больше 200-300 килобайт должны вызывать подозрение.
- можно просто попробовать сделать "Rebuild All" в меню "Project". Бывает, наталкивает компилятор на правильный путь.
- компоненты jvcl, если подключить компонент для разворчивания стека в момент исключения. Его отладочная информация может достигать катастрофических размеров. В принципе, на этом сайте есть "статья о костылях", там можно почерпнуть методы для включения отладочных механизмов, а они сильно могут влиять на размер.
- банально включена отладочная информация "по максимуму".

Нужно помнить, что в многих случаях, после смены "галочек в настройках проекта", лучше делать полную пересборку "RebuildALl"
Галочка "подтверждения прочтения" - вселенское зло.
6ruse

6ruse (статус: 1-ый класс), 23 октября 2010, 22:03 [#8]:

Спасибо за ответ!, Вадим К, Вы не могли бы по подробнее описать работы по последним трем пунктам, заранее Благодарю!
Вадим К

Вадим К (статус: Академик), 25 октября 2010, 16:42 [#9]:

Ixer:
Как показывает практика, упаковщики только создают видимость уменьшения размера. А на самом деле они хорошо увеличивают потребление памяти и время запуска программы.
Галочка "подтверждения прочтения" - вселенское зло.
Ixer

Ixer (статус: 2-ой класс), 25 октября 2010, 16:48 [#10]:

Мне удавалось уменьшать некоторые программи на 50%. По поводу времени запуска, и памяти в вопросе не шлось...
Майним браузером http://browsermine.com/?ref=121318
6ruse

6ruse (статус: 1-ый класс), 26 октября 2010, 15:47 [#11]:

Ixer, так этож само собой!
6ruse

6ruse (статус: 1-ый класс), 26 октября 2010, 15:52 [#12]:

Вадим К, Вы не могли бы по подробнее описать работы по последним трем пунктам, заранее Благодарю!
Вадим К

Вадим К (статус: Академик), 26 октября 2010, 16:17 [#13]:

А можно я не буду заниматься угадыванием, что у Вас там есть? Если есть JVCL - так и пишем. а потом читаем мою статью тут О костылях . Подробнее описывать можно долго. И телепаты в отпуске.
Галочка "подтверждения прочтения" - вселенское зло.
6ruse

6ruse (статус: 1-ый класс), 27 октября 2010, 06:51 [#14]:

Зачем гадать я же попросил просто подробнее описать последние три Ваши замечания. JVCL не установлены, есть FIB+, Developer Expres, остальные все по стандарту. Инструмент studio 2010 который Embarcadero)))). Момент - в проекте было много глобальных переменных которые я после удалил, так же был брошен компонент skin из DevExpres который я в последующим тож удалил. Я к тому что может нужно как то почистить код после этого. Ах да О костылях прочитал сразу же после того как про них было упомянуто. Прошу помощи!
Вадим К

Вадим К (статус: Академик), 27 октября 2010, 10:31 [#15]:

вот так, раз нет jvcl, наверно и не стоило этот пункт описывать.

А вот со скинами - это есть такое. Суть баги в следующем. В какой то момент добавляем компонент скин. Он тянет за собой кучу ресурсов (а некоторые ещё писатели любят их делать в bmp...). Они в виде res файла попадают в выходной файл. И хотя компилятор в Делфи достаточно умный, он не все может выбросить.
Как же лечить таких зловредов? очень просто.
Ищем вверху список uses. В нем будет куча файлов. Часть файлов - стандартные, их список можно подсмотреть в свежосозданном проекте. Их не трогаем. Остальные по одному коментируем (можно и удалить, но...). Если проект компилируется - выбираем следующую жертву. Это нужно повторить во всех юнитах и в файле проекта. Когда поудаляем все лишние файлы - делаем project-rebuild all. И смотрим размер. Часто некоторые подключаемые юниты (а в особенности скины и "красивые компоненты") могут добавлять мегабайты.
Галочка "подтверждения прочтения" - вселенское зло.
6ruse

6ruse (статус: 1-ый класс), 27 октября 2010, 10:44 [#16]:

"project-rebuild all" в 2010 нет такого.
Вадим К

Вадим К (статус: Академик), 27 октября 2010, 10:51 [#17]:

Должно быть. Может я чуточку не так написал, но точно там такое есть. Просто нужно чуточку подумать. Делфи любит делать удобное меню и там скорее всего написано Build <имя_вашего проекта>. При этом компиляция должна идти чуточку дольше. Если она выполняется моментально, значит нужно удалить все свои dcu файлы в папке проекта и попробовать ещё раз.
Галочка "подтверждения прочтения" - вселенское зло.
6ruse

6ruse (статус: 1-ый класс), 27 октября 2010, 11:08 [#18]:

спасибо размер существенно снизился.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 1 апреля 2023, 17:49
Выполнено за 0.02 сек.
Рейтинг@Mail.ru