Форум: "Потрепаться";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизАвтовставка имен модулей в uses Найти похожие ветки
← →
lookin © (2005-10-04 19:55) [0]Пусть на форме имеется некий контрол, например TMainMenu. Удалим название модуля (Menus), в котором описан этот контрол, из uses этой формы. Нажмем Ctrl-F9 и в списке uses этот модуль обязательно появится. Однако же модуль Forms, в котором описан сам объект TForm, будучи вручную удаленным, в списке uses автоматически не появляется. А почему?
← →
Piter © (2005-10-04 22:39) [1]Заметь, что когда кладешь меню на форму - то в Uses соответствующий модуль не сразу появляется.
Можно подумать на эту тему - почему так?
Я думаю, потому что мало ли какие контролы бывают. Ты ведь проектируешь интерфейс - можешь положить компонент... потом подумать - некрасиво, удалить и заменить другим компонентом, то добавишь, этак примеришь... поэтому сразу модули не прописываются.
А прописываются они при первой компиляции. Соответственно, есть некий функционал, который следит за этим - что добавить перед компиляцией по компонентам, расположенным на форме.
А сама форма в этом функционале не прописана, так как фактически это базовый элемент. Перед компиляцией добавляются модули, которые реализуют компоненты, РАСПОЛОЖЕННЫЕ НА ФОРМЕ. А сама ФОРМА сюда не входит, видимо. Как бы по умолчанию считается, что форму то ты никуда не денешь, в отличии от компонетов, которые ты можешь добавить/удалить...
← →
Prohodil Mimo © (2005-10-05 00:19) [2]Piter © (04.10.05 22:39) [1]
Соответственно, есть некий функционал, который следит за этим - что добавить перед компиляцией по компонентам, расположенным на форме
Хорошо бы этот функционал следил ещё и за модулями, которые не используются и удалял их, ну или хотя бы варнинги выдавал. Ато мало ли, пока я форму разрабатываю - 100 компонентов переберу и для каждого компиляцию проведу. Могу и сам, вручную, но я не всегда помню об этом.
ЗЫ. Piter, это не к тебе просьба :о) это просто мысли вслух :о)
← →
lookin © (2005-10-05 00:32) [3][2] Prohodil Mimo © (05.10.05 00:19)
Оттуда ноги и растут, перебрал проект и уменьшился он килобайт на 300 после удаления ненужных модулей
← →
Piter © (2005-10-05 01:02) [4]Prohodil Mimo © (05.10.05 0:19) [2]
то, что ты предлагаешь - невозможно реализовать.
Ты забываешь, что у модулей есть секция Initialization, в которой могут производится какие-то вполне конкретные действия, кардинально влияющие на ход выполнения программы.
Включаешь модуль - и действия производится.
Исключаешь модуль - и этих действий нету.
Поэтому вполне логично, что компилятор не берет на себя ответственность исключать типа "ненужные" модули. Мало ли, что ты не используешь формы. А может тебе нужен Application в твоей программе?
← →
Rouse_ © (2005-10-05 01:08) [5]
> А прописываются они при первой компиляции.
при первой проверке синтаксиса.
> Хорошо бы этот функционал следил ещё и за модулями, которые
> не используются и удалял их
а не жирно будет, перебирать содержимое каждого модуля, на предмет наличия в нем идентификаторов, используемых в твоем модуле. Уж не говоря о том, что в сторонних модулях, могут содержаться, например ресурсы и тд, которые могут использоваться в ран - тайм.. в общем - не тривиальная эта задача..
<за клавой jack128>
← →
drpass © (2005-10-05 01:09) [6]
> Ты забываешь, что у модулей есть секция Initialization,
> в которой могут производится какие-то вполне конкретные
> действия, кардинально влияющие на ход выполнения программы
Собственно, он только эту часть и компонует с программой. Классы в "лишних модулях", которые не используются, не наследуются и т.д. в результирующий исполняемый файл не попадают, уж на это ума у компоновщика хватит
← →
Piter © (2005-10-05 01:38) [7]drpass © (05.10.05 1:09) [6]
ну это естественно. Если модуль не используется и там нету Initizalization - так он и не будет включен в конечный EXE. ПРосто будет лишнее "слово" в Uses висеть - никакой беды.
← →
Piter © (2005-10-05 01:40) [8]Rouse_ © (05.10.05 1:08) [5]
а не жирно будет, перебирать содержимое каждого модуля, на предмет наличия в нем идентификаторов, используемых в твоем модуле
странный способ :)
Я думаю, вполне не жирно будет перебирать все объявленные идентификаторы приложения на предмет в каких они модуляю реализованы и данные модули отмечать. Модули, которые подключены, но которые по результатам проверки не отмечены - и есть "лишние".
Думаю, тут проблем то нет.
← →
Германн © (2005-10-05 01:58) [9]ИМХО, нам на это следует "забить"!
Когда-то Борланд продвигал себя в том числе и тем, что "тщательно убирал за собой", вставляя в исполнямый файл только то, что нужно. Сейчас - нет. Но это и не очень нужно, имхо. А "трудозатраты" на "тщательную уборку" очень возрасли с той поры. :(
← →
GuAV © (2005-10-05 02:07) [10]Piter © (05.10.05 1:40) [8]
Вот например я чтобы не писать CoInitialize добавил ComObj в uses (так лучше, вызов CoInitialize "централизованнее"). Как компилятору догадаться что раз я работаю с COM, то этот модуль нужен, иначе - нет, если я не использую никкие его идентификаторы ?
← →
Piter © (2005-10-05 02:18) [11]GuAV © (05.10.05 2:07) [10]
это вопрос ко мне? Может, ты перечитаешь ВСЕ мои посты? Я то как раз об этом и говорю, между прочим.
Добавить нужные модули - это реально и это реализовано.
А вот убирать ненужные - это технически невозможно (если только на уровне ИИ). Поэтому и нереализовано.
Внимательнее надо быть, а не вырывать фразы/посты из контекста :)
← →
Piter © (2005-10-05 02:19) [12]GuAV © (05.10.05 2:07) [10]
я тебе даже процитирую:
Piter © (05.10.05 1:02) [4]
Ты забываешь, что у модулей есть секция Initialization, в которой могут производится какие-то вполне конкретные действия, кардинально влияющие на ход выполнения программы
← →
Prohodil Mimo © (2005-10-05 21:49) [13]Piter © (05.10.05 1:02) [4]
Ты забываешь, что у модулей есть секция Initialization, в которой могут производится какие-то вполне конкретные действия, кардинально влияющие на ход выполнения программы
Я об этом не забыл, потому и написал, что мог бы варнинги выдавать.
> Я думаю, вполне не жирно будет перебирать все
> объявленные идентификаторы приложения на предмет в
> каких они модуляю реализованы и данные модули
> отмечать. Модули, которые подключены, но которые по
>результатам проверки не отмечены - и есть "лишние".
> Думаю, тут проблем то нет
вот и могли бы сделать.
ЗЫ. да меня это всё не волнует, просто увидел ветку, вспомнилось :о)
← →
Piter © (2005-10-05 23:11) [14]Prohodil Mimo © (05.10.05 21:49) [13]
Я об этом не забыл, потому и написал, что мог бы варнинги выдавать
варнинги на что? Что не так?
Если в модуле есть инициализация - то тогда компилятор естественно не будет исключать модуль, также как и делать Warning - зачем?
А если в модуле нет инициализации и он не используется - так он все равно не будет скомпилирован, пусть даже и включен.
В чем проблема?
← →
Prohodil Mimo © (2005-10-05 23:22) [15]Piter © (05.10.05 23:11) [14]
> варнинги на что? Что не так?
что бы я обратил внимание и выкинул модуль, если он не нужен.
В чем проблема?
что бы в тексте не было лишнего мусора.
ну не нравится мне когда там понаписаны модуля, которые не используются.
← →
Amoeba © (2005-10-06 11:32) [16]Есть утилита для поиска неиспользуемых модулей - Icarus:
http://www.peganza.com/products.htm
← →
Игорь Шевченко © (2005-10-06 13:16) [17]Amoeba © (06.10.05 11:32) [16]
Поддерживаю и настоятельно рекомендую автору ветки.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.049 c