Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Вниз

Неиспользуемые модули   Найти похожие ветки 

 
Karluha   (2005-07-19 14:23) [0]

Суть проблемы такова: я решил удалить из проекта все неиспользуемые модули из uses. Есть множество утилит, позволяющий их определить. Все вроде хорошо, но когда я удаляю некоторые из них, интеллектуальная Delphi IDE сама добавляет некоторые из них, хотя в действительности они в модуле не используются. Вопрос: как сделать Delphi IDE немного глупее?


 
Digitman ©   (2005-07-19 14:25) [1]


> как сделать Delphi IDE немного глупее?


очень просто - стать самому чуть умнее, поняв ПОЧЕМУ "Delphi IDE сама добавляет некоторые из них"


 
Karluha   (2005-07-19 15:07) [2]

Тогда может кто нить объяснит почему она это делает? Никак не могу понять, что может заставить IDE включить модуль Buttons, если на форме нет ниодного компонента из этого юнита, но возможно есть его наследники.


 
Digitman ©   (2005-07-19 15:20) [3]


> возможно есть его наследники.


а разве это не повод ?

к тому же на некие идент-ры, декларированные именно в модуле Buttons, может ссылаться код проекта


 
Юрий Зотов ©   (2005-07-19 15:30) [4]

> Karluha   (19.07.05 15:07) [2]

> но возможно есть его наследники.

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

И нет никакой разницы, будет ли модуль Buttons упомянут в одном предложении uses, или в нескольких. Вот он и включается в Ваши модули - разницы нет, а IDE удобнее делать поиск (для Code Completion и пр.).


 
Karluha   (2005-07-19 15:35) [5]

Эксперимент показал что в uses включаются все модули всех родителей класса, хотя мне и не очень понятно зачем. Скорее всего потому что я ничего не знаю о теории компиляции.

Всем спасибо.


 
Digitman ©   (2005-07-19 15:41) [6]


> хотя мне и не очень понятно зачем


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

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

думаем головой ... не иным местом ...


 
Karluha   (2005-07-19 16:05) [7]

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

Я не вижу смысла включать Unit1 в Unit3, если слово inherited написано в Unit2


 
Digitman ©   (2005-07-19 16:09) [8]


> Karluha   (19.07.05 16:05) [7]


ты видимо не понял.
значит есть повод почитать букварь.


 
Karluha   (2005-07-19 16:18) [9]

Интересно в каком букваре описывается принцип работы Delphi компилятора.


 
tesseract ©   (2005-07-19 16:28) [10]

>> Интересно в каком букваре описывается принцип работы Delphi компилятора.

Кое-что есть в "Фундаментальные алгоритмы и структуры данных на Delphi"


 
Digitman ©   (2005-07-19 16:29) [11]

в букваре по обычному Паскалю


 
Karluha   (2005-07-19 16:38) [12]

>в букваре по обычному Паскалю

Там описывается теория компиляторов? Или принципы работы Delphi компилятора? Интересно... Похоже я совсем отстал от жизни. Пора менять профессию


 
Karluha   (2005-07-19 17:15) [13]

Господин Digitman. Проведите эксперимент. Откомпилируйте проект из командной строки, без тех модулей, которые добавлены IDE и увидете, что все прекрасно компилируется и работает.


 
DiamondShark ©   (2005-07-19 17:18) [14]


> Karluha   (19.07.05 17:15) [13]

Они тебя просто из эстетических соображений раздражают?
Не бойся. Лишнего кода они не создают.


 
Karluha   (2005-07-19 17:20) [15]

Ну в принципе меня они не раздражают и размер бинареиков меня тоже не пугает. Я ПРОСТО ХОЧУ ПОНЯТЬ. Это же так просто, желание знать ПОЧЕМУ.


 
Юрий Зотов ©   (2005-07-19 17:23) [16]

> Karluha   (19.07.05 17:20) [15]

> размер бинареиков меня тоже не пугает.
Он не увеличится. См. [4].

> ПОЧЕМУ.
Это нужно для IDE. Снова см. [4].


 
DiamondShark ©   (2005-07-19 17:28) [17]

Ну, если говорить честно, то IDE они не нужны.


 
Karluha   (2005-07-19 17:31) [18]

Интересно просто зачем же IDE эта инфа, если при открытии формы, она способна определить все эти модули и так, и добавить их в uses. Не похоже что бы это была необходимость IDE и эксперимент доказывает что и в результате нет необходимости в этом модуле.


 
oldman ©   (2005-07-19 17:34) [19]

Я шизею...
А как модули появились в uses, если они "неиспользуемые"?
Это не Дельфи надо стать тупее, а, скорее, наоборот (имхо)...


 
Юрий Зотов ©   (2005-07-19 17:40) [20]

> Karluha   (19.07.05 17:31) [18]

> зачем же IDE эта инфа, если при открытии формы, она способна
> определить все эти модули и так, и добавить их в uses.

Например, для ускорения работы Code Completion. Чтобы не парсить при каждом чихе кучу uses"ов, а один раз добавить все связанные модули в один uses и дальше парсить только его.


 
Karluha   (2005-07-19 17:45) [21]

> Я шизею...
> А как модули появились в uses, если они "неиспользуемые"?
> Это не Дельфи надо стать тупее, а, скорее, наоборот (имхо)...

Нет повода так расстраиваться, господин oldman.
ИМХО, прежде чем делать подобные заявления, нужно попробовать и убедиться. Хотя зачем же ГУРУ заниматься подобными вещами. В этой жизни ведь все так прозрачно.

Никак не могу понять, зачем люди переходят на подобные высказывания. Я вроде никого не пытаюсь обидеть или оскорбить. Просто задал вопрос, и хотел получить ответ. А те кому подобная тема не интересна, могли и просто промолчать.


 
DiamondShark ©   (2005-07-19 17:51) [22]


> Юрий Зотов ©   (19.07.05 17:40) [20]

Это вы уже фантазируете.

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


 
Юрий Зотов ©   (2005-07-19 17:52) [23]

> Karluha   (19.07.05 17:45) [21]

> нужно попробовать и убедиться.

Не раз пробовали и не раз убеждались. В том, что неиспользуемые модули в uses действительно не появляются.


 
Karluha   (2005-07-19 17:52) [24]

> Например, для ускорения работы Code Completion. Чтобы не парсить > при каждом чихе кучу uses"ов, а один раз добавить все связанные модули в один uses и дальше парсить только его.

Очень интересно. А зачем мне в Code Completion лишнее? Как раз для его ускорения эти модули и нужно удалить, а если они понадобятся, то я их сам добавлю. Или я ошибаюсь?


 
Юрий Зотов ©   (2005-07-19 17:53) [25]

> DiamondShark ©   (19.07.05 17:51) [22]

Не вижу, чем мои фантазии хуже Ваших.


 
Юрий Зотов ©   (2005-07-19 17:55) [26]

> Karluha   (19.07.05 17:52) [24]

Каким Вы представляете себе механизм работы Code Completion?


 
Karluha   (2005-07-19 17:58) [27]

Согласен с DiamondShark. Это возможно сделано просто для удобства.

Ну я могу дать пример элементарного проекта с элементарными компонентами, из которых исключены, добавленные IDE модули из одной из форм, и все работает отлично. Можно узнать, каким образом Юрий Зотов неоднократно убеждался в том, что все модули необходимы?


 
WondeRu ©   (2005-07-19 17:59) [28]

DiamondShark ©   (19.07.05 17:18) [14]
Не бойся. Лишнего кода они не создают.


Правда?
А всякие initialization-finalization? как я понимаю они все-равно в проект включатся, даже если не будешь пользовать функции из этих модулей!


 
Karluha   (2005-07-19 18:00) [29]

> Юрий Зотов

Code Completion должен показать мне все, что есть в моих uses и ничего более. Прошу заметить, что если я добавлю к классу свойство с типом из модуля Dialogs, то этот самы модуль не добавляется к uses. Куда же смотрит Code Completion?


 
DiamondShark ©   (2005-07-19 18:06) [30]


> Юрий Зотов ©   (19.07.05 17:53) [25]

Почему хуже? Единственное не может быть хуже или лучше.
Кроме Ваших, тут никаких фантазий больше нет.

Зависимости для включения модулей определяются только по published членам использованных компонентов. А code completion прекрасно работает для всех членов. Даже без включения модулей.

Для ускорения code completion используется не "парсение кучи юзесов", а кэшированная метаинформация, полученная при компиляции всех связанных модулей.


 
DiamondShark ©   (2005-07-19 18:08) [31]


> WondeRu ©   (19.07.05 17:59) [28]

А подумать?

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


 
jack128 ©   (2005-07-19 18:11) [32]

Karluha
Какие теории компиляции, какие особенности работы дельфи.. Тут бы с обычным наследованием разобраться...


 
WondeRu ©   (2005-07-19 18:14) [33]

DiamondShark ©   (19.07.05 18:08) [31]
да не... вот я вздумал использовать СОМ-объекты... включил модули ActiveX, ComObj, ComServ... потом резко передумал!!! А объявления модулей остались... Код в их инициализации все-равно скомпилится и запустится!


 
Karluha   (2005-07-19 18:14) [34]

> jack128
Это каменть в мой огород?


 
DiamondShark ©   (2005-07-19 18:16) [35]


> WondeRu ©   (19.07.05 18:14) [33]

Это тебя уже не в ту степь понесло.


 
Karluha   (2005-07-19 18:16) [36]

> jack128
Согласен что тема наследования безгранична и интересна, но топик о другом...


 
jack128 ©   (2005-07-19 18:16) [37]

WondeRu ©   (19.07.05 18:14) [33]
потом резко передумал!!!

Это твои сугубо личные проблемы, ide - не телепат и не знает, когда ты передумаешь.. Удали их в ручную из Uses


 
jack128 ©   (2005-07-19 18:20) [38]

Karluha   (19.07.05 18:16) [36]
Согласен что тема наследования безгранична и интересна, но топик о другом...


Karluha   (19.07.05 15:07) [2]
Тогда может кто нить объяснит почему она это делает? Никак не могу понять, что может заставить IDE включить модуль Buttons, если на форме нет ниодного компонента из этого юнита, но возможно есть его наследники.


Такое мог только человек, не знающий что такое наследование, а отсюда и следует все те "ненужные" прописывания модулей в uses..


 
Karluha   (2005-07-19 18:22) [39]

Это твои сугубо личные проблемы, ide - не телепат и не знает, когда ты передумаешь.. Удали их в ручную из Uses

Зато IDE телепат по поводу используемых модулей.


 
DiamondShark ©   (2005-07-19 18:22) [40]


> jack128 ©   (19.07.05 18:20) [38]

Наследование тут совершенно ни при чём.



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

Форум: "Основная";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.041 c
14-1121643366
Мутамба
2005-07-18 03:36
2005.08.07
Правда ли что на Украине какой-то батюшка предал анафиме модерато


4-1117900157
NeoVariant
2005-06-04 19:49
2005.08.07
Свой текст в подсказке для TrayIcon состояние соединения


1-1121884311
UK-AAV
2005-07-20 22:31
2005.08.07
Количество строк


3-1120222202
DesWind
2005-07-01 16:50
2005.08.07
Раскрывающийся список DBLookupComboBox, как раскрыть полностью?


14-1120783826
АНТИСПАММЕР
2005-07-08 04:50
2005.08.07
Карта Земли GoogleEarth





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