-
Доброе время суток, уважаемые Мастера!!!
Опять я со своими странными вопросами. На этот раз вопрос очень сложный, возможно, самый сложный, который я когда-либо задавал. Итак...
Delphi - замечательный инструмент, который автоматиски (в момент компиляции, в момент сохранения, в момент....) добавляет необходимые юниты в uses. Скажите, на каком этапе и кем (чем) это происходит. Как я могу перехватить такой процесс.
Вопрос закончен.
-
Как я могу перехватить такой процесс.
чтобы что сделать после этого?
-
Скажите, на каком этапе и кем (чем) это происходит
Очевидно тогда же когда и дфм модифицируется.
-
> Поросенок Винни-Пух © (24.09.08 17:53) [1]
> чтобы что сделать после этого? всё тебе расскажи!
> Очевидно тогда же когда и дфм модифицируется. нет. Опытным путём было установлено, что во многих случаях. Даже если всё сохранено, нажимаешь Ctrl+F9 - возникает процесс
-
это типа чтобы скомпилить приложение с дбгридом, но чтобы в экзешник dbgrid.dcu не попал?
-
Напиши заглушку, дабы не мучаться с экспетрами кода.
-
Иначе побороть среду думаю не сможешь
-
> DimaBr © (25.09.08 08:44) [5] заглушкой не решишь, он всёравно будет видеть происхождение...
Проделав опыты, прихожу к следующим выводам. ПРОЦЕСС просматривает все открытые модули, в которых есть "формы" (+датамодули+фреймы), просматривает все заюзанные компоненты по иерархии классов, вплоть (вроде) до TPersistent. В RTTI таких классов указан UnitName. Таким образом создаётся список "обязательных юнитов" для модуля. Все недостающие uses-юниты добавляются.
ПРОЦЕСС возникает во Многих случаях. При сохранении, при компиляции, при закрытии модуля, ... и даже при CodeInsight.
Как отловить ПРОЦЕСС ?
-
зачем его ловить-то? модуль все равно в юзесе появится. либо ничего не скомпилируется.
-
> Поросенок Винни-Пух © (25.09.08 16:45) [8]"зачем" - это вопрос десятый, вопрос топика не в том! Я, конечно, мог бы рассказать свою долгую историю про движок и подмену классов... но думаю - не нужно. > модуль все равно в юзесе появится. либо ничего не скомпилируется.Вообще говоря... Если ты создашь, например, модуль StdClasses, в который пропишешь все нужные типы и константы из модулей Classes, Controls, Graphics, Dialogs, ... : type
TStream = Classes.TStream; то при наличии в uses модуля StdClasses, все классы будут видны. Но это отступление от темы. Вопрос открыт.
-
ну понятно. парень спрашивает как небольно отпилить себе кисть левой руки и в этом и есть суть вопроса. хотя на самом деле ему надо освободится от наручников, и ключ при этом лежит под тумбочкой
-
Удалено модератором
-
> про движок и подмену классов...
см. как это организовано в KOL, вернее в MCК.
-
> Наиль © (08.10.08 20:15) [12] > см. как это организовано в KOL, вернее в MCК.
там реализовано некрасиво: постоянные Ifdef-ы, в то время как не-KOL код не имеет НИКАКОЙ ценности при компиляции... Разве что "защита от автодобавления кода".
|