Инструмент/утилита для рефакторинга свойств обработчика событий Delphi 6?

У меня есть компонент, который широко используется в базе кода моего приложения (т. е. в нескольких приложениях). Я хочу изменить одно из часто используемых свойств обработчика событий. Мне нужен инструмент/утилита, которая будет проходить через исходный файл формы Delphi 6 (DFM + PAS) и выполнять поиск и замену определенных в настоящее время обработчиков событий для экземпляров компонента в форме.

Например. Предположим, у меня есть свойство обработчика событий для компонента, в настоящее время определенного как:

property eventHandler1: TOldEventHandlerProc read FOnEvent write FOnEvent;

Где TOldEventHandlerProc определяется как:

TOldEventHandlerProc = procedure(oneParm: string) of object;

Я хочу изменить TOldEventHandlerProc на:

TOldEventHandlerProc  = procedure(oneParm: string; twoParm: integer) of object;

Я бы хотел, чтобы утилита проверяла содержимое пары файлов DFM/PAS формы и находила все экземпляры FOnEvent, которые определены, и заменяла старый список параметров на новый список параметров на основе нового определения TOldEventHandlerProc. Например, для формы с именем MyForm1 с экземпляром компонента с именем MyComp1 у вас будет следующее объявление, сгенерированное IDE для обработчика событий:

TMyForm1 = class(TForm)
    // IDE created event handler stubs.
    procedure MyComp1OnEvent(oneParm: string);

с телом обработчика события, объявленным как:

procedure TMyForm1.MYCom1OnEvent(oneParm: string);

Утилита должна будет найти каждый экземпляр обработчика OnEvent() и заменить объявление заголовка для обработчика события и объявление тела для обработчика события и поменять местами списки параметров с результатом:

TMyForm1 = class(TForm)
    // IDE created event handler stubs.
    procedure MyComp1OnEvent(oneParm: string; twoParm: integer);

с телом обработчика события, объявленным как:

procedure TMyForm1.MYCom1OnEvent(oneParm: string; twoParm: integer);

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


person Robert Oschler    schedule 13.09.2011    source источник
comment
В GExperts есть опция поиска и замены grep, которая также может искать файлы форм. Если вы уверены, что все ваши формы хранятся как text-dfm, и это тот же самый текст, который вы хотите заменить везде, это может сработать.   -  person R-D    schedule 13.09.2011
comment
Встроенный диалог поиска также поддерживает регулярные выражения и может использоваться для поиска и замены текстовых шаблонов. См. справку в разделе Регулярные выражения.   -  person Ondrej Kelle    schedule 13.09.2011


Ответы (1)


Функция рефакторинга доступна в последней версии Delphi.

Вы можете легко реорганизовать свой код, используя один из них, и в конечном итоге исправить каждый DFM, чтобы обеспечить совместимость с Delphi 6.

person menjaraz    schedule 16.12.2011