Вниз
Скачать: CL | DM;

Очистка USES   Найти похожие ветки 

← →
Stanislav ©   (2006-07-27 11:08) [0]

Можно ли каким-то образом автоматически из всех модулей проекта вычистить блок USES, т.е. убрать из него те модули которые нигде не используются


← →
KilkennyCat ©   (2006-07-27 11:17) [1]

Просто удалить. Нужные сами воскреснут, большинство.


← →
Stanislav ©   (2006-07-27 11:47) [2]

В принципе можно, но хотелось бы автоматом.
Зачем вообще делфи их компилит в EXE если они не используются?


← →
Сергей М. ©   (2006-07-27 11:52) [3]


> Зачем вообще делфи их компилит в EXE если они не используются?


Затем и компилит, что в ходе "компиляции" как раз и выясняет, надо оно или не надо для обеспечения работоспособности целевого кода.


← →
PSPF2003 ©   (2006-07-27 11:52) [4]

Угумс.. Был тут один хотел чтоб ему Делфи по рисунку программу сделал…


← →
Stanislav ©   (2006-07-27 11:57) [5]

Сергей М. ©   (27.07.06 11:52) [3]

Так если ненадо, зачем тогда включает в EXE?


← →
Сергей М. ©   (2006-07-27 12:01) [6]


> если ненадо, зачем тогда включает в EXE?


Если включает, значит надо.
А если не понимаешь, что из включаемого есть действительно "надо", так и спроси)


← →
Stanislav ©   (2006-07-27 12:10) [7]

Сергей М. ©   (27.07.06 12:01) [6]

Не согласен!
Берем "Тяжелый" компонент, например cxGrid, кладем на форму, компилируем, смотрим объем exe - 2,08 МБ.
Удаляем CxGrid, т.е. он нигде не используется, а в uses остаются прописанные модули, компилируем, смотрим объем exe - 2,07 МБ.
Оьъем уменьшился только на ресурс занимаемый экземпляром cxGrid"a
Вывод Delphi включила не используемый в проекте класс TcxGrid


← →
Сергей М. ©   (2006-07-27 12:14) [8]


> Stanislav ©   (27.07.06 12:10) [7]


Мало что еще делает юнит, в котором определен/реализован класс TcxGrid !
Среда не обязана отслеживать хитрозадую (не очевидную) логику юнитов, потому и не удаляет юнит из списка.


← →
Плохиш ©   (2006-07-27 12:57) [9]


> Stanislav ©   (27.07.06 12:10) [7]

Модуль телепатор в делфи ещё не встроили, поэтому она совершенно не знает нужны суперкрутомупрогеру все модули, которые он соизволил включить в uses или нет. К примеру, если ты снимаешь колесо у велика, то у тебя вилка сама отваливается? Она же не нужна уже, колеса-то нет.


← →
PSPF2003 ©   (2006-07-27 13:04) [10]


> Плохиш ©

Прикольное сравнение :)


← →
Stanislav ©   (2006-07-27 13:26) [11]

Дело в том что велик не автоматизированная система.
А проанализировать что нужно что не нужно вполне реально.


← →
@!!ex ©   (2006-07-27 13:32) [12]

Stanislav ©
ну вот если тебе реально, то и напиши анализатор, который будет это делать.
Делов то.
Или опять логика: Да вот мне нужно.... Да это вообще то плево делаеться... Но мне самому неохото.... Может компонент какой есть?


← →
KilkennyCat ©   (2006-07-27 13:32) [13]

> [11] Stanislav ©   (27.07.06 13:26)

> А проанализировать что нужно что не нужно вполне реально.


Возможно, именно поэтому программы пока еще пишут люди, а?

Указанный пример с TcxGrid не имеет никакого отношения к Делфи, это просто человеческий фактор. См. [9]


← →
Stanislav ©   (2006-07-27 13:41) [14]

@!!ex ©   (27.07.06 13:32) [12]
Возможно напишу, но по логике уже должен быть.


← →
@!!ex ©   (2006-07-27 13:45) [15]

>>Возможно напишу, но по логике уже должен быть.

По логике уже должны быть парящие автомобили на воде в качестве горючего.

Если серьезно, то анализатор довольно объемный и медленный получиться, но не сложный.....
Хотя некоторые вещи я бы сейчас не рискнул утверждать, что знаю как сделать.


← →
KilkennyCat ©   (2006-07-27 14:13) [16]

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


← →
KilkennyCat ©   (2006-07-27 14:14) [17]

> По логике уже должны быть парящие автомобили на воде в качестве
> горючего.


Забавно можно прочитать: автомобили, которые парят на воде. Используются в качестве горючего, причем именно паря на воде :))


← →
Stanislav ©   (2006-07-27 14:22) [18]

KilkennyCat ©   (27.07.06 14:13) [16]

Правильно из USES удалять и не нужно, но и ненужно включать в exe


← →
jack128 ©   (2006-07-27 14:30) [19]

Stanislav ©   (27.07.06 13:41) [14]
Возможно напишу, но по логике уже должен быть.

На искуственный интелект замахивемся? Ну-ну..  

PS  нужно ли удалять модуль XPMan из списка uses  ??


← →
KilkennyCat ©   (2006-07-27 14:31) [20]

а если все-таки нужно? может, я там внутре что-то перекрыл генофондное?

Вот Вам сейчас нужна кнопка, Вы ее кинули на панель. А потом стала не нужна, Вы даже нигде ее не упомянули, не одно событие ее не обработали... Ее тоже надо удалить автоматом? А мож она для красоты?

На мой взгляд, лучше больше уделить внимания разработке проекта, дабы не возникало нужды в таком анализаторе. Ибо, раз требуется автоматизация такого, значит во всех проектах так плохо...


← →
Stanislav ©   (2006-07-27 14:35) [21]

Кнопка прописывается в класс формы и XPMan, тоже.
Проекты не мои.


← →
Ketmar ©   (2006-07-27 14:35) [22]

в общем случае, как уже написали, задача автоматически нерешаема.

интересно, как анализатор будет вести себя, например, с моим модулем conDriver2U, в котором нет ни одного "публичного" объявления? выкинет? а по рогам за такую самодеятельность? у меня в initialization делается всё, что надо.

или оставлять все модули, где непустые секции инициализации/завершения? так тогда что выкидывать-то, если у очень многих модулей они непустые? ну-ну, пишите...


← →
@!!ex ©   (2006-07-27 14:53) [23]

Кнопка прописывается в класс формы и XPMan, тоже.
XPMan не может прописаться в форме... У меня и формы то нету.....
Это тодже анализировать? :)
Действительно ИИ получаеться.

KilkennyCat
Ну да... Запятую не поставил. Бывает.


← →
Игорь Шевченко ©   (2006-07-27 14:59) [24]

http://peganza.com/ICARUS.ZIP


← →
Stanislav ©   (2006-07-27 15:49) [25]

@!!ex ©   (27.07.06 14:53) [23]
Если нету формы зачем "для красоты" кнопки?
И XPMAN?

Еще ни от кого не услышал нормального объяснения почему Borland так сделали, хотя почему то так сделали.
Ведь компания Borland не глупая?

А мне вот интересно почему?

Я думаю что если нельзя найти нормального объяснения зачем вообще умничать?


← →
@!!ex ©   (2006-07-27 15:55) [26]

>>Если нету формы зачем "для красоты" кнопки?
И XPMAN?

Формы нету. Зато есть WinAPI Window. и WinAPI Button. И т.д...

>>Еще ни от кого не услышал нормального объяснения почему Borland так сделали, хотя почему то так сделали.
Ведь компания Borland не глупая?

А мне вот интересно почему?

Я думаю что если нельзя найти нормального объяснения зачем вообще умничать?

Нормального объяснения чему? Что не сделали анализатора, который убирает ненужные юниты? Да как определить то, нужные юниты или нет?


← →
Сергей М. ©   (2006-07-27 16:02) [27]


> как определить то, нужные юниты или нет?


Примерно так же просто, как столь же просто определить, является ли некий код вредоносным или не является (вирус или не вирус ?)


← →
@!!ex ©   (2006-07-27 16:05) [28]

Сергей М. ©

Практически халява.... И почему еще никто не сделал?.....


← →
Stanislav ©   (2006-07-27 16:07) [29]

@!!ex ©   (27.07.06 15:55) [26]
Я говорю уже не за USES, хотя можно это анализировать по желанию.

В итоге получается EXE-шник, в котором часть кода никогда не заработает, т.к.  нет на него никаких ссылок, зачем он тогда вообще нужен.


← →
Сергей М. ©   (2006-07-27 16:08) [30]


> @!!ex ©   (27.07.06 16:05) [28]


> Практически халява


Не позорься.


← →
Stanislav ©   (2006-07-27 16:08) [31]

Игорь Шевченко ©   (27.07.06 14:59) [24]
Спасибо!
Все таки есть такая программа.


← →
@!!ex ©   (2006-07-27 16:09) [32]

Stanislav ©

А ктож его знает, есть ссылки или нет?

Не забывай, что к функциям можно обращаться по адресу памяти.


← →
Сергей М. ©   (2006-07-27 16:10) [33]


> В итоге получается EXE-шник, в котором часть кода никогда
> не заработает


А другая часть обязана сработать. Например, код в секции initialization. Поскольку он имеет место там быть.
И что прикажешь компилятору делать в этом случае ?


← →
@!!ex ©   (2006-07-27 16:10) [34]

Сергей М. ©   (27.07.06 16:08) [30]
Не позорься.

Мне уже не страшно.


← →
Stanislav ©   (2006-07-27 16:18) [35]

Сергей М. ©   (27.07.06 16:10) [33]
Initialization эта секция в еxe-файле выполняется самая первая если по логике программы она коданибудь выполнится значит выполнится, а если никогда, значит она там не нужна, и не стоит ее включать в EXE.


← →
Сергей М. ©   (2006-07-27 16:23) [36]


> Initialization эта секция в еxe-файле


Чавой-то ?

В каком-таком еще "еxe-файле" ?

Речь идет о Делфи-проекте и юнитах, которые могу содержать, амогут и не содержать секции initialization/finalization.


← →
Stanislav ©   (2006-07-27 16:27) [37]

Сергей М. ©   (27.07.06 16:23) [36]
см Stanislav ©   (27.07.06 16:07) [29]


← →
Сергей М. ©   (2006-07-27 16:30) [38]


> Stanislav ©   (27.07.06 16:27) [37]


Ну и почему ты считаешь, что Делфи обязана исключить из процесса компиляции юнит, фигурирующий в USES и имеющий заведомо непустую секцию initialization или finalization ?


← →
Stanislav ©   (2006-07-27 16:36) [39]

Я не считаю, где я написал что его нужно исключить?


← →
Сергей М. ©   (2006-07-27 16:43) [40]


> где я написал что его нужно исключить?


В [7], например.



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

Скачать: CL | DM;



Память: 0.55 MB
Время: 0.032 c
2-1157308879
иван8511
2006-09-03 22:41
2006.09.24
Матричный принтер


3-1153467923
RomanH
2006-07-21 11:45
2006.09.24
Столбец-массив в IB


2-1157548945
learner
2006-09-06 17:22
2006.09.24
Размер динамического массива


3-1153398683
zorik
2006-07-20 16:31
2006.09.24
Как изменить CHARACTER SET для всей БД?


2-1157266560
Itoixxx
2006-09-03 10:56
2006.09.24
Работа с филдами в ибКвнри




   Наверх