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

Вниз

Хочу написать плагин к IDE Delphi. Помогите, кто чем может.   Найти похожие ветки 

 
Домарощинер ©   (2004-04-16 17:14) [0]

Смысл плагина в том, чтоб пройтись по всем модулям проекта и поудалять все ненужные ссылки на другие модули из секции uses.
Сама технология написания известна(ToolsAPI), а вот как реализовать такую функциональность, у меня пока нет никаких идей.
И ещё маленькая просьба ко всем: если речь идёт об "изобретении велосипеда", просьба кидаться ссылками.


 
Anatoly Podgoretsky ©   (2004-04-16 17:15) [1]

А как будешь определять не нужные?


 
VMcL ©   (2004-04-16 17:19) [2]

>>Домарощинер ©  (16.04.04 17:14)

DelphiN\Demos\ToolsAPI
___
LMD


 
Домарощинер ©   (2004-04-16 17:20) [3]


> 2Anatoly Podgoretsky ©   (16.04.04 17:15) [1]

Я это тоже хотел спросить...


 
Домарощинер ©   (2004-04-16 17:21) [4]


> VMcL ©   (16.04.04 17:19) [2]

Вах!


 
Юрий Зотов ©   (2004-04-16 17:35) [5]

> Домарощинер ©   (16.04.04 17:14)

Что касается технологии, то посмотрите  
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1081864133&n=0
там приведены очень неплохие ссылки.

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

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


 
Игорь Шевченко ©   (2004-04-16 17:36) [6]


>  а вот как реализовать такую функциональность, у меня пока
> нет никаких идей.


www.peganza.ru Icarus.zip - бесплатно. Идея очень хорошая, но реализация ее сложная


 
Домарощинер ©   (2004-04-16 17:37) [7]

Предлагайте.


 
Calm ©   (2004-04-16 17:38) [8]

В каждом модуле, который прописан в uses находим все объявленные переменные, константы, функции, процедуры, типы  и т.д.
Ищем их в файлах проекта. Если не находим - лишний модуль.

Если модуль без исходника, то не получится. Хотя может и можно попытаться программно запустить компиляцию проекта.


 
Домарощинер ©   (2004-04-16 17:42) [9]


> Юрий Зотов ©   (16.04.04 17:35) [5]

&

> Игорь Шевченко ©   (16.04.04 17:36) [6]

Благодарю за ссылки.

2Юрий Зотов ©   (16.04.04 17:35)
Спасибо за идею.
В принципе, вначале так и собирался делать - парсить исходники. Но потом подумал, что так делать некрасиво.


 
Anatoly Podgoretsky ©   (2004-04-16 17:42) [10]

Юрий Зотов ©   (16.04.04 17:35) [5]
Согласно этому TManifest и аналогичное подлежит изничтожению :-) Ну не берется из него ничего!


 
Игорь Шевченко ©   (2004-04-16 17:45) [11]

Ошибся. www.peganza.com


 
Anatoly Podgoretsky ©   (2004-04-16 17:51) [12]

Домарощинер ©   (16.04.04 17:42) [9]
Не в красоте дело, кроме то учти сложные, вложенные with и точто по голому идентификатору не определить правильный модуль. Про dcu/bpl уже сказали.
Этот список можно продолжать и далее.


 
Домарощинер ©   (2004-04-16 18:02) [13]


> Этот список можно продолжать и далее.

Продолжайте,
Очень интересно услышать весь список граблей...)


 
Vuk ©   (2004-04-16 18:06) [14]

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


 
ИМХО ©   (2004-04-16 18:10) [15]

ССЗБ.


 
Домарощинер ©   (2004-04-16 18:12) [16]


> но секция инициализации может выполнять некоторые действия

Да-да.
Ведь если б не эта секция, то и особого смысла в этом эксперте не было бы.
А так, благодаря этим секциям только растёт размер готового бинарника...(

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


 
Домарощинер ©   (2004-04-16 18:14) [17]


> ССЗБ.

Простите, у Вас имеется веский аргумент?


 
IGOREK ©   (2004-04-16 18:20) [18]

Я предлагаю проще. :-)

Эмулируем нажатие правой клавиши миши на каждом слове кода и выбор пункта FindDeclaration посылкой сообщений в Дельфу. Если открывается новый исходник - заносим его в список. В конце вырезаем из uses те, что не попали в список.

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


 
Vuk ©   (2004-04-16 18:27) [19]

>Если открывается новый исходник - заносим его в список.
У нас в проекте более 700 модулей. Delphi в модулях путается настолько, что Find Declaration практически не работает. Мне теперь все модули из uses поудалять? ;o)


 
VMcL ©   (2004-04-16 18:45) [20]

Дополнение к [19]

Тем более, что не ко всем модулям может быть указан Browsing Path.


 
VMcL ©   (2004-04-16 18:46) [21]

В смысле, к некоторым может быть и не указан :)



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

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

Наверх




Память: 0.51 MB
Время: 0.028 c
7-1075963179
Creator
2004-02-05 09:39
2004.04.11
Убийство приложения


3-1081591834
nika_ufc
2004-04-10 14:10
2004.04.11
проблема с АДО и Oracle


4-1079444425
BillyJeans
2004-03-16 16:40
2004.04.11
Окно без title bar...


1-1082569450
Andrew (Znak)
2004-04-21 21:44
2004.04.11
Интерфес программы наподобие Delphi


14-1079685038
Cosinus
2004-03-19 11:30
2004.04.11
База данных по книгам