Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.07;
Скачать: CL | DM;

Вниз

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

 
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]

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


 
jack128 ©   (2005-07-19 18:26) [41]

Karluha   (19.07.05 18:22) [39]
Знаешь, для того чтобы понять, что если в проэкте используется класс TChild = class(TParent), то в проэкт гарантированно включен юнин, в котором описан TParent большого ума не надо. Для этого нужно лишь знать, что такое наследование. Разработчики IDE это знают, а ты нет, вот и вся разница..


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

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


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

DiamondShark ©   (19.07.05 18:22) [40]
Наследование тут совершенно ни при чём.


DiamondShark ©   (19.07.05 17:51) [22]
При написании кода для компонента могут потребоваться описания из модуля наследника (я так понимаю тут описка, имелось в виду предка ?? Иначе бред получается - jack128), например, обработчик собития, доставшегося компоненту в наследство, с какими-то хитрыми параметрами.


???

Хотя если ты знаешь, как заставить IDE автоматом включать в uses не только модули предков компонентов, и какие нить другие, то я бы с удовольствием послушал, иногда нужно бывает..


 
Karluha   (2005-07-19 18:37) [44]

Знаешь, для того чтобы понять, что если в проэкте используется класс TChild = class(TParent), то в проэкт гарантированно включен юнин, в котором описан TParent большого ума не надо. Для этого нужно лишь знать, что такое наследование. Разработчики IDE это знают, а ты нет, вот и вся разница..

Мне кажутся весьма забавными все ваши предположения по поводу моих знаний. А вы когда нибудь читали исходные коды VCL? Похоже что да. Это видно невооруженным взглядом. Так вот если бы вы их читали, господин jack128, то не утверждали бы, что разработчики IDE знают хоть что то об ООП. А по поводу моих знаний...я и не утверждаю что я большой профессионал, и даже не говорю что я много знаю. Я человек скромный.


 
DiamondShark ©   (2005-07-19 18:41) [45]


> jack128 ©   (19.07.05 18:32) [43]

(да, описка)


> ???

Что непонятно?
На самом деле, нужни не модули предка, а модули, содержащие описания всего, что использовано в published.
IDE вставляет модули, содержащие предков, видимо из предположения, что эти описания скорее всего будут там. Для включения модулей просматривает цепочку наследования, а не всю метаинформацию, видимо, от того, что это проще.
Хотя по-уму должна была бы просматривать всю.
Судя по тому, что ты пишешь дальше, ты этот момент тоже заметил.


> Хотя если ты знаешь, как заставить IDE автоматом включать
> в uses не только модули предков компонентов, и какие нить
> другие, то я бы с удовольствием послушал, иногда нужно бывает..

Как уже имеющуюся IDE заставить, я не знаю. Наверное, никак.
Как это в принципе могло бы быть устроено, я представляю.


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

> Karluha   (19.07.05 17:58) [27]

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


И что? Разве это значит, что этих модулей не будет в бинарнике?

Они там будут, потому что они ему небходимы, иначе он не сможет работать. А что Вы там поисключали из uses - пофиг.

> и все работает отлично.

Это и означает, якобы "исключенные" Вами модули в бинарнике все равно есть, иначе бы он просто не работал. Так что ничего Вы на самом деле не исключили.

> Можно узнать, каким образом Юрий Зотов неоднократно
> убеждался в том, что все модули необходимы?


Можно. Переименуйте файлы якобы "ненужного" модуля и попробуйте скомпилировать программу. Другой вариант - просмотреть бинарник, там названия модулей тоже есть.

Karluha   (19.07.05 18:00) [29]

> Code Completion должен показать мне все, что есть в моих
> uses и ничего более.


Почему Вы так решили - непонятно. Мне, например, удобнее, когда Code Completion показывает все.

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


Это только подтверждает мое предположение. Поскольку Code Completion, очевидно, смотрит на дерево наследования, RTTI и интерфейсные функции/константы/переменные. Типы же, как самостоятельные единицы, ему, собственно, не нужны.

===================================

P.S.
Поспокойнее, плз, мы не на базаре. Если я тоже начну язвить - мало не покажется, гарантирую.


 
Karluha   (2005-07-19 19:08) [47]

На счет поспокойнее я согласен, но прошу не оскорблять и мое Я.

Почему Вы так решили - непонятно. Мне, например, удобнее, когда Code Completion показывает все.
На вкус и цвет... Так же прошу заметить, что слово ВСЕ очень пугающее. Так же для проверки, просто создайте пустую форму, удалите из uses модуль Windows и посмотрите, будут ли в Code Completion ф-ии и типы из него. Я попробовал. Нет не будут. Хотя в модуль Forms модуль Windows включен. Это коворит о том что в Code Completion показыватся только то, что в uses.

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


 
Юрий К   (2005-07-19 19:19) [48]

А можно взять и написать некую прогу, которая исследует перед окончательной сборкой сорсы (проекта, используемых модулей VCL с использованием RTTI информации) и на их основе создаст новый проект с новыми сорсами, убрав всё ненужное из всех используемых в проекте модулей). А новые модули VCL с удалёнными ненужными местами поместит в директорию нового проекта.
Желающих нет?


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

> DiamondShark ©   (19.07.05 18:06) [30]

> Кроме Ваших, тут никаких фантазий больше нет.

Ой ли? Читаем дальше.

> Зависимости для включения модулей определяются только по
> published членам использованных компонентов.


Предки - побоку? Типы, константы, переменные, функции - тоже побоку? Для них включать ссылку на модуль не требуется?

Эксперимент показывает обратное.

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


Убираем ссылку на Menus. Пишем StripHotK и жмем Ctrl+Space. Опа! Не работает Сode Сompletion.

Снова добавляем ссылку на Menus. Снова жмем Ctrl+Space в той же позиции курсора. Опа! Заработал Сode Сompletion.

Не было модуля - не работал. Добавили - заработал. Вот ведь как.

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


Пишем в проекте какой-то метод класса (функцию, переменную, константу...). И проект НЕ компилируем. Жмем Ctrl+Space. Опа! В окне Code Completion появилось то, что мы только что написали и еще НЕ компилировали. Откуда же, спрашивается, она взялась?

Ответ - получена парсингом. Поскольку другого способа нет.


 
Юрий Зотов ©   (2005-07-19 19:22) [50]

> Karluha   (19.07.05 19:08) [47]

> прошу не оскорблять и мое Я.

Плз, перечитайте все мои постинги в этой ветке, и укажите пальцем, где конкретно я оскорбил Ваше Я.

Найдете - я извинюсь. Не найдете - стоит задуматься. ИМХО.


 
Юрий Зотов ©   (2005-07-19 19:31) [51]

> Karluha   (19.07.05 19:08) [47]

> На вкус и цвет...

Вот именно. Разработчики Delphi сделали по СВОЕМУ вкусу. Если Вы считаете, что они сделали неправильно, то, как минимум, должны хотя бы признавать, что они имели на это полное право. И не говорить о том, как они ОБЯЗАНЫ были сделать.

> Так же прошу заметить, что слово ВСЕ очень пугающее.

Это тоже на вкус и цвет. Меня оно не пугает.

> в Code Completion показыватся только то, что в uses.

Совершенно верно. И об этом же самом я и твержу.

> Очевидно что линкуются

Значит, они необходимы. И указаны ли они только в одном uses, или в десятке - неважно. А Вы почему-то считаете их ненужными. Как же так? Вы же сами говорите, что для бинарника они нужны, для Code Completion - тоже нужны. Как же так - не нужны?


 
Karluha   (2005-07-19 19:41) [52]

> прошу не оскорблять и мое Я.
Не относится конкретно к вам. Если чем обидел, прошу прощения.

> И не говорить о том, как они ОБЯЗАНЫ были сделать.
Нигде не писал, что они ОБЯЗАНЫ были это сделать.

> Мне, например, удобнее, когда Code Completion показывает все.
Тогда что же означает сдесь слово ВСЕ? Если:
>> в Code Completion показыватся только то, что в uses.
>Совершенно верно. И об этом же самом я и твержу

Нужными модули являются для бинарника, но не для того модуля, в который их включила IDE и соответственно Code Completion не нуждается в нем (в случае этого модуля)


 
Anatoly Podgoretsky ©   (2005-07-19 19:59) [53]

Это просто конкретный случай, ты не все использовал, вот поэтому и можно удалить, как только начнешь использовать шире так и почуствуешь, что удалять нельзя.
Подход Борланда мне кажется правильным.
Не нравится поведение ИДЕ, не используй, компилируй консольным компилятором. Только это ничего не дает, эти исключеные модули будут все равно включены из потомков.


 
Юрий К   (2005-07-19 21:21) [54]

А есть ещё и КОЛ, можно и его использовать.


 
Defunct ©   (2005-07-20 02:14) [55]

> Karluha  
А вот и камень в твой огород.

Редко встретишь столько бреда в одной ветке (Karluha это именно к твоим постам относится). Советую начать изучение программирования не с Delphi, а с TP7, еще лучше Tasm, который здорово прополощит твои мозги.


> то не утверждали бы, что разработчики IDE знают хоть что то об ООП.

PS: охватить сразу почему те или иные модули нужны, а те или иные не нужны, в среде программирования, которая весит сотни мегабайт и разрабатывалась сотнями, а то и тысячами людей понять с ходу будучи Karluho"й и даже имея семь пядей во лбу, увы,  невозможно. Неуважение к разработчикам VCL, которое так из тебя и прет, будешь высказывать только тогда, когда напишешь нечто лучшее чем VCL.

> прошу не оскорблять и мое Я.
извини, не получилось.


 
ЮЮ ©   (2005-07-20 03:19) [56]

Не кидай компоненты в Дизайне, а создавай их РанТime - и тогда IDE "не навяжет" ни одного "лишнего" иодуля в uses, правда и нужные придется прописывать самому :)


 
Юрий Зотов ©   (2005-07-20 05:05) [57]

> Karluha   (19.07.05 19:41) [52]

Сравните два своих же высказывания (нумерация и выделения - мои):

1. Нужными модули являются для бинарника, но не для того модуля, в который их включила IDE и соответственно Code Completion не нуждается в нем (в случае этого модуля)
(c) [52]

2. Это коворит о том что в Code Completion показыватся только то, что в uses.
(c) [47]

И теперь скажите - так нужно или не нужно включение в uses ссылки на модуль для работы Code Completion ?

Все-таки. А то я так и не понял. Сорри.


 
kull   (2005-07-20 15:44) [58]

Есть один тонкий момент.

Компонент реализован в CompUnit.pas, он наследуется и требует в uses WinParentUnit.pas.

Если мне надо использовать компонент из CompUnit в Unit1, то IDE прописывает в его(Unit1) uses CompUnit и WinParentUnit. Вроде чего тут страшного все равно так и так WinParentUnit будет включен в проект.

А теперь представим, что под Linux у меня компонент наследуется с использованием  LnxParentUnit.pas.

(С линуксом это для примера, может быть просто вариант с версией Delphi или просто с директивами условной компиляции)

Таким образом при перенесении кода Unit1 под Linux, он не скомпилится, WinParentUnit то здесь нет.

Вот и получается, что вредно думать за пользователя.


 
Плохиш ©   (2005-07-20 15:55) [59]


> kull   (20.07.05 15:44) [58]

Если ты создаёшь платформо-зависимый код, то это не должно вызывать головную боль у создателей компилятора, это только твои проблемы.

PS. Читай [55] до прояснения.


 
DiamondShark ©   (2005-07-20 17:17) [60]


> Юрий Зотов ©   (19.07.05 19:19) [49]


> > А code completion прекрасно работает для всех членов.
> > Даже без включения модулей.
>
> Убираем ссылку на Menus. Пишем StripHotK и жмем Ctrl+Space.
> Опа! Не работает Сode Сompletion.

А StripHotK -- это член? Или, всё-таки, глобальная функция?
А читать цитируемое не обязательно?

Вот другой пример.

Unit1.pas
type
 TClass1 = class
   constructor Create(A,B,C: Integer);
 end

Unit2.pas
uses
 Unit1;
type
 TClass1_1 = class(TClass1);

Unit3.pas
uses
 Unit2;
type
 TClass1_2 = class(TClass1_1)
   constructor Create;
 end;
implementation
constructor TClass1_2.Create;
begin
 inherited Create(| <= Тут жмём Ctrl+Shift+Space или просто ждём
end;
Всплывает подсказка A,B,C: Integer
Откуда оно узнало, если этот метод описан в Unit1, а мы его не включали?


> Пишем в проекте какой-то метод класса (функцию, переменную,
> константу...). И проект НЕ компилируем. Жмем Ctrl+Space.
> Опа! В окне Code Completion появилось то, что мы только
> что написали и еще НЕ компилировали. Откуда же, спрашивается,
> она взялась?
>
> Ответ - получена парсингом. Поскольку другого способа нет.

В слова захотелось поиграть? Ню-ню.


 
Юрий Зотов ©   (2005-07-20 20:33) [61]

> DiamondShark ©   (20.07.05 17:17) [60]

> А StripHotK -- это член? Или, всё-таки, глобальная функция?

В слова захотелось поиграть? Ню-ню.

> Откуда оно узнало, если этот метод описан в Unit1, а мы его
> не включали?

Ответ - получено парсингом. Поскольку другого способа нет.


 
kull   (2005-07-20 22:21) [62]


> Плохиш ©   (20.07.05 15:55) [59]

А платформо-зависимый код тут ни при чем. Если читал внимательно -

> (С линуксом это для примера, может быть просто вариант с
> версией Delphi или просто с директивами условной компиляции)

иначе совет тот же: "..до прояснения".

PS.
Хотя, если с этой точки здрения подойти - та же малина...

Код Unit1.pas с использованием CompUnit.pas - не платформо-зависимый, Но стоило IDE поумничать, и он таковым стал. Или ты хочешь ловить IFDEF-ами автоматически вставляемые юниты, неблагодарное енто дело :)


 
Плохиш ©   (2005-07-20 22:44) [63]


> kull   (20.07.05 22:21) [62]

Мда, детский сад на выезде.


 
kull   (2005-07-20 22:56) [64]

Да вроде молодой ищо. Старческим маразмом не страдаю. У меня еще усе спереди. :)



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

Текущий архив: 2005.08.07;
Скачать: CL | DM;

Наверх




Память: 0.66 MB
Время: 0.042 c
1-1121435444
Destroyer
2005-07-15 17:50
2005.08.07
Как узнать какой объект лежит ниже?


6-1114672921
SH@RK
2005-04-28 11:22
2005.08.07
Как c помощью WinInet закачать HTML страничку по адресу https://


3-1117864446
GekaNaz
2005-06-04 09:54
2005.08.07
dbExpress - попытка коннекта


3-1119705083
ks
2005-06-25 17:11
2005.08.07
права доступа к таблице Paradox


14-1121751761
Leya
2005-07-19 09:42
2005.08.07
Изменить расширение