Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1155296292
KygECHuK
2006-08-11 15:38
2006.09.24
Поиск по имени компонента


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


15-1157041214
Sam Stone
2006-08-31 20:20
2006.09.24
TNSListner


15-1157559096
BFG9k
2006-09-06 20:11
2006.09.24
Перевод XML в HTML


2-1157130201
nordic3
2006-09-01 21:03
2006.09.24
Код цвета





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