Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Вниз

Вопрос о размере приложения - почему?   Найти похожие ветки 

 
tipman   (2003-12-02 11:58) [0]

Пишу так:

program pr;
uses SysUtils;
begin
end.

Почему Delphi пихает в приложение весь модуль SysUtils. Ведь в данном приложении я не использую ни одной функции.
И можно как нить сделать так чтобы Delphi была немного "умнее" в этом вопросе?


 
Тимохов   (2003-12-02 12:00) [1]

с чего вы решили что дельфи действительно запихивает этот модуль?
Ваши доказательства?


 
Jel   (2003-12-02 12:01) [2]

Если в модуле есть секции инициализации и финализации он включается целиком, по-моему так. В SysUtils они есть.


 
NikeOLD   (2003-12-02 12:06) [3]

А ты не пробовал смотреть, что там инициализируется?
Сделай модуль с парой функций и секцией инициализации, используй только одну функцию, вторую не трогай, в initializetion пропиши что-нибудь и тоже используй. Откомпилируй и посмотри, что Дельфи включила в компиляцию.


 
Jel   (2003-12-02 12:15) [4]

Не поленился и проверил. Согласен с [3]. Был неправ - в откомпилированный проект попадают только те функции которые реально используются в программе.


 
Тимохов   (2003-12-02 12:17) [5]

2jel
В общем-то это общеизвестно (не знаю правда, откуда) поведение компилятора дельфи.

2Атору вопроса
Все-таки где доказательства что глупая дельфи добавила sysutils в проект?


 
NikeOLD   (2003-12-02 12:17) [6]

Однако это не всегда так. Например модуль Forms - гроза размера приложения. Убери эту хрень и простая прога, состоящая из окна на API будет весить около 12-17 килобайт.


 
NikeOLD   (2003-12-02 12:34) [7]

У ж если совсем прижало и критичен размер, так выдерни нужные функции из SysUtils и забудь про этот модуль вообще.


 
tipman   (2003-12-02 13:18) [8]

Тимохов (02.12.03 12:00) [1]

program pr;
uses SysUtils;
begin
end.

размер откомпилированного файла в несколько раз больше чем тот же но без SysUtils


 
Amoeba   (2003-12-02 13:22) [9]

Добавлен тот код, который вызывается в разделах Initialozation и Finalization.


 
Тимохов   (2003-12-02 13:24) [10]

2tipman
1. Думаю что это легко объяснить. Открывам sysutils. Видим секцию initialization. Там есть определенный код. Наверное именно добавление в код используемых процедур и влечет увеличение результата.
2. Может вы оспариваете способность дельфи не включать в код не используемые процедуры? Тогда это надо доказать. Но думаю без хорошего знания асма это будет сложно.


 
tipman   (2003-12-02 13:38) [11]

Amoeba (02.12.03 13:22) [9]
Спасиба! Я сначала написал [8], а тока потом допёр.
т.е. при включении модуля Forms, те самые 300 кб которые добавляются - это всё тоже из раздела initialization! Не очень то както удобно!
т.е. я хочу использовать одну функцию из модуля forms, а delphi мне в ответ на это суёт нехилый раздел initialization, и эту функцию, для которой всё что происходит в initialization вообщем то дофени! Как то тут не додумано!


 
tipman   (2003-12-02 13:41) [12]

Ладна! А как насчёт модуля Math? Там нет initialization, a размер приложения увеличивается даже если я не использую ни одной функции!

program pr;
uses Math;
begin
end. ?????????????


 
Closer   (2003-12-02 13:57) [13]

1.
Проверить подключение модуля SysUtils можно при помощи редактора ресурсов. В ресурсе PACKAGEINFO указаны какие модули были подключены к проекту при компиляции.

2.
Если у тебя хорошее зрение :)), то ты наверное сможешь увидеть строчку uses SysUtils; в модуле Math.


 
tipman   (2003-12-02 14:19) [14]

Сенкс! Урубилси! Пояснили доступно!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
7-36874
Серж
2003-10-07 18:33
2003.12.12
Получить путь к выполняемой программе


1-36706
Dysan
2003-12-02 14:43
2003.12.12
Tchart


1-36764
Алексей Глеб
2003-12-01 19:13
2003.12.12
Текущий видеорежим


1-36629
RedArc
2003-11-19 19:57
2003.12.12
хитрозадый TreeView


3-36514
Улан
2003-11-19 07:16
2003.12.12
dbf+ADO





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский