Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизХочу написать плагин к IDE Delphi. Помогите, кто чем может. Найти похожие ветки
← →
Домарощинер © (2004-04-16 17:14) [0]Смысл плагина в том, чтоб пройтись по всем модулям проекта и поудалять все ненужные ссылки на другие модули из секции uses.
Сама технология написания известна(ToolsAPI), а вот как реализовать такую функциональность, у меня пока нет никаких идей.
И ещё маленькая просьба ко всем: если речь идёт об "изобретении велосипеда", просьба кидаться ссылками.
← →
Домарощинер © (2004-04-16 17:14) [0]Смысл плагина в том, чтоб пройтись по всем модулям проекта и поудалять все ненужные ссылки на другие модули из секции uses.
Сама технология написания известна(ToolsAPI), а вот как реализовать такую функциональность, у меня пока нет никаких идей.
И ещё маленькая просьба ко всем: если речь идёт об "изобретении велосипеда", просьба кидаться ссылками.
← →
Anatoly Podgoretsky © (2004-04-16 17:15) [1]А как будешь определять не нужные?
← →
Anatoly Podgoretsky © (2004-04-16 17:15) [1]А как будешь определять не нужные?
← →
VMcL © (2004-04-16 17:19) [2]>>Домарощинер © (16.04.04 17:14)
DelphiN\Demos\ToolsAPI
___
LMD
← →
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: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: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: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:36) [6]
> а вот как реализовать такую функциональность, у меня пока
> нет никаких идей.
www.peganza.ru Icarus.zip - бесплатно. Идея очень хорошая, но реализация ее сложная
← →
Домарощинер © (2004-04-16 17:37) [7]Предлагайте.
← →
Домарощинер © (2004-04-16 17:37) [7]Предлагайте.
← →
Calm © (2004-04-16 17:38) [8]В каждом модуле, который прописан в uses находим все объявленные переменные, константы, функции, процедуры, типы и т.д.
Ищем их в файлах проекта. Если не находим - лишний модуль.
Если модуль без исходника, то не получится. Хотя может и можно попытаться программно запустить компиляцию проекта.
← →
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)
Спасибо за идею.
В принципе, вначале так и собирался делать - парсить исходники. Но потом подумал, что так делать некрасиво.
← →
Домарощинер © (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 и аналогичное подлежит изничтожению :-) Ну не берется из него ничего!
← →
Anatoly Podgoretsky © (2004-04-16 17:42) [10]Юрий Зотов © (16.04.04 17:35) [5]
Согласно этому TManifest и аналогичное подлежит изничтожению :-) Ну не берется из него ничего!
← →
Игорь Шевченко © (2004-04-16 17:45) [11]Ошибся. www.peganza.com
← →
Игорь Шевченко © (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 уже сказали.
Этот список можно продолжать и далее.
← →
Anatoly Podgoretsky © (2004-04-16 17:51) [12]Домарощинер © (16.04.04 17:42) [9]
Не в красоте дело, кроме то учти сложные, вложенные with и точто по голому идентификатору не определить правильный модуль. Про dcu/bpl уже сказали.
Этот список можно продолжать и далее.
← →
Домарощинер © (2004-04-16 18:02) [13]
> Этот список можно продолжать и далее.
Продолжайте,
Очень интересно услышать весь список граблей...)
← →
Домарощинер © (2004-04-16 18:02) [13]
> Этот список можно продолжать и далее.
Продолжайте,
Очень интересно услышать весь список граблей...)
← →
Vuk © (2004-04-16 18:06) [14]Добавлю к списку граблей наличие секции инициализации у модуля. То есть явно код модуля может не использоваться, но секция инициализации может выполнять некоторые действия, которые влияют на работу программы, например, регистрировать классы.
← →
Vuk © (2004-04-16 18:06) [14]Добавлю к списку граблей наличие секции инициализации у модуля. То есть явно код модуля может не использоваться, но секция инициализации может выполнять некоторые действия, которые влияют на работу программы, например, регистрировать классы.
← →
ИМХО © (2004-04-16 18:10) [15]ССЗБ.
← →
ИМХО © (2004-04-16 18:10) [15]ССЗБ.
← →
Домарощинер © (2004-04-16 18:12) [16]
> но секция инициализации может выполнять некоторые действия
Да-да.
Ведь если б не эта секция, то и особого смысла в этом эксперте не было бы.
А так, благодаря этим секциям только растёт размер готового бинарника...(
Вот ещё идея - можно для большей наглядности кода напротив каждого модуля из секции uses перечислять те классы и методы, которые в нём используются.
← →
Домарощинер © (2004-04-16 18:12) [16]
> но секция инициализации может выполнять некоторые действия
Да-да.
Ведь если б не эта секция, то и особого смысла в этом эксперте не было бы.
А так, благодаря этим секциям только растёт размер готового бинарника...(
Вот ещё идея - можно для большей наглядности кода напротив каждого модуля из секции uses перечислять те классы и методы, которые в нём используются.
← →
Домарощинер © (2004-04-16 18:14) [17]
> ССЗБ.
Простите, у Вас имеется веский аргумент?
← →
Домарощинер © (2004-04-16 18:14) [17]
> ССЗБ.
Простите, у Вас имеется веский аргумент?
← →
IGOREK © (2004-04-16 18:20) [18]Я предлагаю проще. :-)
Эмулируем нажатие правой клавиши миши на каждом слове кода и выбор пункта FindDeclaration посылкой сообщений в Дельфу. Если открывается новый исходник - заносим его в список. В конце вырезаем из uses те, что не попали в список.
Или еще круче - программно наводим мышь над каждым словом, ждем хинта, тянем оттуда название модуля и т.д.
← →
IGOREK © (2004-04-16 18:20) [18]Я предлагаю проще. :-)
Эмулируем нажатие правой клавиши миши на каждом слове кода и выбор пункта FindDeclaration посылкой сообщений в Дельфу. Если открывается новый исходник - заносим его в список. В конце вырезаем из uses те, что не попали в список.
Или еще круче - программно наводим мышь над каждым словом, ждем хинта, тянем оттуда название модуля и т.д.
← →
Vuk © (2004-04-16 18:27) [19]>Если открывается новый исходник - заносим его в список.
У нас в проекте более 700 модулей. Delphi в модулях путается настолько, что Find Declaration практически не работает. Мне теперь все модули из uses поудалять? ;o)
← →
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:45) [20]Дополнение к [19]
Тем более, что не ко всем модулям может быть указан Browsing Path.
← →
VMcL © (2004-04-16 18:46) [21]В смысле, к некоторым может быть и не указан :)
← →
VMcL © (2004-04-16 18:46) [21]В смысле, к некоторым может быть и не указан :)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.034 c