Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
14-36842
mmmaloy
2003-11-19 14:54
2003.12.12
Шаравары (Shareware)


14-36824
FoxPro
2003-11-19 13:34
2003.12.12
Вопрос по поводу FoxPro


1-36678
iWorm
2003-12-03 02:42
2003.12.12
Задержка


3-36578
_VaaL_
2003-11-20 12:03
2003.12.12
Threads с одним ADOConnection


6-36794
genek84
2003-10-16 09:29
2003.12.12
Как программно найти скрытые папки типа C$ на удаленной машине