Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.5 MB
Время: 0.037 c
3-1126865844
V.I.P.er
2005-09-16 14:17
2005.10.30
Пароль на PARADOX7


14-1128750300
wandler
2005-10-08 09:45
2005.10.30
Пожалуста помогите !


2-1128594808
Del_programmer
2005-10-06 14:33
2005.10.30
строки


10-1106223619
uncle
2005-01-20 15:20
2005.10.30
body for IHTMLDocument2


14-1128867205
alexsis
2005-10-09 18:13
2005.10.30
Странно





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