Инструмент для изменения имени объекта и всех ссылок на него

Если я вношу серьезные изменения в модуль, мне нравится менять его имя, чтобы было ясно, что это другая версия, и чтобы не было путаницы с другими архивными версиями, например: CSVUtils.PAS становится CsvUtilsNew.PAS.

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

Unit ManiForm

Uses
  CSVUtils 

становится

Unit ManiForm

Uses
  CsvUtilsNew

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

Icarus очень хорошо находит все ссылки, но я не могу найти инструмент, который бы автоматически обновлял все остальные юниты.

Кто-нибудь знает какие-либо инструменты, которые автоматически обновляют ссылки на единицы?

Большое спасибо


person Hamish_Fernsby    schedule 13.03.2012    source источник


Ответы (3)


Вы также можете определить псевдоним устройства в настройках проекта. Например. CSVUtils=CsvUtilsNew

person Ondrej Kelle    schedule 13.03.2012
comment
Это, безусловно, работает. Я использовал эту функцию, чтобы помочь перейти с D6 на D2010. Речь идет о модулях управления темами XP Майка Лишке, которые были включены в Delphi в D7, что привело к изменению названия. Также блоки изображений png и gif, которые имели разные имена. Мне просто нужны были псевдонимы, в то время как я хотел, чтобы код компилировался обоими компиляторами. И псевдонимы юнитов работали превосходно. Хотя я бы не рассматривал их как долгосрочное решение. - person David Heffernan; 13.03.2012
comment
Псевдонимы модулей могут быть правильным решением для поставщиков компонентов, которым нужен единый источник для компиляции во всех версиях Delphi, но на уровне приложения (а не на уровне производителя компонента) это быстро теряет смысл. - person Warren P; 13.03.2012
comment
Мы используем List&Label в качестве механизма отчетов. У него есть замечательная особенность включения номера версии в имена модулей — есть l17.pas, cmbtLL17.pas и так далее. Мы решили эту проблему с помощью псевдонима cmbtLLAlias=cmbtLL17;LLAlias=l17 и поместив ... псевдонимы в предложения uses. - person Uli Gerhardt; 13.03.2012
comment
Это все очень полезные советы, всегда удивительно, что там, когда вы знаете, что искать !! Я еще не принял ни один из трех ответов, так как подозреваю, что все три имеют свои относительные достоинства, поэтому я не хотел выражать фаворитизм там, где их нет, я попробую предложенные методы и посмотрю, что лучше всего подходит для моего приложения, Брайан - person Hamish_Fernsby; 16.03.2012
comment
Это хороший трюк CSVUtils=CsvUtilsNew, о котором я не знал раньше и который позволяет быстро решать проблемы, но я подозреваю, что его, возможно, лучше не использовать широко, в основном потому, что если над проектом работают другие, они могут не знает об этом и может вызвать путаницу. Однако хорошее быстрое исправление отладки? - person Hamish_Fernsby; 16.03.2012
comment
LIst & Label интересен, может быть полезен для определенных сценариев, где я в настоящее время использую t-chart или восторженные отчеты. - person Hamish_Fernsby; 16.03.2012

Я бы использовал GExperts поиск и замену Grep.

person iamjoosy    schedule 13.03.2012
comment
Для этого подойдет любой grep. Я использовал это (wingrep.com) в течение многих лет. - person RobertFrank; 13.03.2012
comment
Возможно, но GExperts grep интегрирован в IDE и несколько заточен под Delphi-разработку. - person Uli Gerhardt; 13.03.2012
comment
@Ульрих, согласен. С GExperts grep вы можете, например, ограничить область действия проектами, группами проектов, каталогами и т. д. - person iamjoosy; 13.03.2012
comment
полезные инструменты, возможно, некоторые другие функции в GExperts, которые я также найду полезными, мне нравится, что он разработан для Delphi. - person Hamish_Fernsby; 16.03.2012

Я бы использовал Notepad++ или UltraEdit для поиска и замены во всех файлах (*.pas, *.dpr, *.dproj) старого имени устройства новым именем устройства. Если у вас нет переменных или функций с тем же именем, что и у модуля, это работает очень хорошо, быстро и не требует какого-либо специализированного синтаксического анализатора.

person Andreas Hausladen    schedule 13.03.2012