Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизОчистка 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 вся ветка
Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.042 c