새로운 글
새로운 덧글

델파이 프로젝트를 마이그레이션 시 컴포넌트 변경과 속성 변경 등 수작업 요소를 자동화 해 작업시간을 줄여줄 수 있는 reFind.exe 도구를 소개합니다.

reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구

reFind.exe(이하 reFind)는 정규표현식 패턴을 이용해 텍스트파일의 문자열을 찾아 바꿔주는 커맨드라인 도구입니다.


reFind는 델파이 소스코드(*.PAS)와 폼파일(*.dfm, *.fmx)의 속성과 유닛명을 일괄적으로 치환(replace)하거나 제거 할 수 있습니다.

특히, 마이그레이션 시 버전에 따라 변경된 속성명과 uses절의 유닛명을 정리해야 하는데요. reFind.exe를 이용하면 일일히 프로젝트를 열고 찾아서 손으로 수정하는 대신 프로젝트의 모든 소스와 폼파일을 대상으로 일괄 변경할 수 있어 마이그레이션 작업시간을 크게 줄여줍니다.

❑ reFind 사용법

reFind는 커맨드라인 도구이며, 명령프롬프트에서 사용할 수 있습니다.

reFind는 델파이 설치경로 하위의 bin 디렉토리에 델파이 설치 시 함께 설치됩니다. 해당 경로는 델파이 설치 시 윈도우 PATH에 등록되기 때문에 명령 프롬프트의 어떤 경로에서도 (reFind.exe 경로지정 없이)"reFind.exe" 명령어를 실행할 수 있습니다.


주요 실행인자

명령프롬프트에서 "reFind.exe /?"를 호출하면 사용법과 실행인자에 대한 도움말을 표시합니다. 그중 핵심 실행인자 몇개만 소개합니다.
  • <filemasks> : 치환작업 대상파일(파일마스크와 파일명)을 기입합니다.(예> "Source/*.pas Source/*.dfm" Source 경로 하위 모든 소스와 폼파일 대상)
  • /S - 하위 디렉토리를 모두 포함해 작업
  • /P:<검색패턴> - 검색패턴 기입
  • /R:<치환패턴> - 치환패턴 기입
  • /X:<패턴 규칙파일 경로> - 검색과 치환패턴이 여러줄로 입력된 패턴 규칙파일의 경로 지정
검색패턴(/P)과 치환패턴(/R) 그리고 패턴 규칙파일(/X)에 등록되는 패턴규칙은 PCRE(Perl호환 정규표현식)을 사용합니다.

reFind 사용법 예시

모든 PAS 파일에서 "TQuery"를 "TFDQuery"으로 일괄 변경

reFind.exe *.pas /I /W /P:TQuery /R:TFDQuery


모든 PAS와 DFM 파일에서 "TxxxQuery"를 "TFDQuery"로 일괄 변경

reFind.exe *.pas *.dfm /I /W "/P:T[A-Za-z]Query" /R:TFDQuery


Source 경로 하위 모든 디렉토리의 PAS와 DFM 파일을 대상으로 패턴파일에 등록된 패턴 적용

reFind.exe Source/*.pas Source/*.dfm /X:migration_pattern.txt


☞ 자세한 reFind.exe는 기술문서를 통해 확인할 수 있습니다.

❑ 패턴 규칙파일 포맷

 패턴 규칙파일은 여러 행으로 이뤄집니다. 각 행은 하나의 규칙을 나타냅니다. 패턴 규칙파일은 /X:<파일경로>를 사용해 지정할 수 있습니다.


찾기 및 바꾸기 규칙

<search pattern> -> <replace pattern>

<search pattern>을 <replace pattern>으로 대체합니다 이때 search, replace 모두 PCRE 패턴을 사용합니다.


uses절 제거 규칙

#unuse <unit name>

지정된 <unit name>을 PAS파일의 interface와 Implimentation 섹션의 uses절에서 제거합니다.


속성 제거 규칙

#remove <property name>

지정된 속성 이름(<property name>)을 PAS 파일과 DFM 파일에서 제거합니다. PAS 파일에서는 <속성> := <값>; 같은 구문이 모두 삭제됩니다.


전환 규칙

#migrate [<class> :] <old name> -> <new name> [, <unit>]

PAS 파일과 DFM 파일의 모든 <old name>을 <new name>으로 대체합니다. <class>가 지정된 경우 지정된 클래스 대상으로만 적용됩니다.

  • DFM 파일인 경우 - 상속된 객체가 아니라 기본 개체에만 적용됩니다.

  • PAS 파일인 경우 - with 절은 적용되지 않습니다.(<object>.<old name> 구문만 적용됩니다.)

<unit>이 지정된 경우 <old name>이 발견된 PAS파일의 uses 절에 <unit>이 추가됩니다. <unit>은 여러개를 쉼표로 구분할 수 있습니다.


패턴 규칙파일 예시

BDE를 FireDAC으로 마이그레이션하는 패턴 규칙파일의 일부입니다.

// uses 절에서 BDE 관련 유닛 제거

#unuse BDE.DBTables

#unuse BDE.BDEConst


// 사용하지 않는 속성 제거

#remove SessionName


// 속성 전환(, 뒤에 uses절에 추가할 유닛 등록)

#migrate Session.* -> FDManager.*, FireDAC.Comp.Client

#migrate DatabaseName -> ConnectionName


// 컴포넌트 교체(, 뒤에 uses절에 추가할 유닛 등록)

#migrate TSession -> TFDManager, FireDAC.Comp.Client

#migrate TDatabase -> TFDConnection, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Comp.Client

#migrate TTable -> TFDTable, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client

#migrate TQuery -> TFDQuery, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client


reFind.exe에 대해 알아봤습니다. reFind.exe의 사용법은 reFind.exe를 이용해 BDE 프로젝트를 FireDAC으로 마이그레이션 따라하기를 통해 익혀보시기 바랍니다.
번호 제목 글쓴이 날짜 조회 수
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 관리자 2017.02.06 26
공지 이 달의 기술자료 & 기술레터 관리자 2017.02.06 33
공지 데브기어 강의 - 2017년 2월~2017년 4월 관리자 2015.01.22 5015
공지 RAD Studio(Delphi, C++Builder) 자료 한 눈에 보기 관리자 2015.06.30 6799
공지 RAD 스튜디오로 개발된 모바일 앱 사례 험프리 2014.01.16 143873
707 [10.2 도쿄] 델파이/C++빌더 리눅스 개발환경 설정하기(미리보기) new 험프리 2017.02.21 13
706 [발표자료] 개발 생산성 극대화하기 with 10.1.2 베를린 file 험프리 2017.02.16 80
705 [오픈소스] 델파이 컴포넌트, 프레임워크, 라이브러리, 리소스 등등 관리자 2017.02.15 57
704 [FireDAC] FireDAC에 대한 궁금증을 FAQ를 통해 해결해 보세요. file 험프리 2017.02.14 24
703 [마이그레이션] 64비트 적용 시 검토할 사항들 file 험프리 2017.02.08 88
702 [마이그레이션][FireDAC] MapRules를 적용해 데이터타입 매핑하기 file 험프리 2017.02.07 31
701 [따라하기] 도서대여 프로그램 만들기 - 6, 통합테스트 file 험프리 2017.02.02 100
700 [따라하기] 도서대여 프로그램 만들기 - 5, 도서대여 기능 개발 file 험프리 2017.02.02 63
699 [따라하기] 도서대여 프로그램 만들기 - 4, 회원관리 기능 개발 [1] file 험프리 2017.02.01 104
698 델파이 개체를 메모리에서 해제할 때 Free와 FreeAndNil의 차이점 김원경 2017.02.01 87
697 컴파일 시 특정 경고 메시지를 발생하지 않도록 하는 방법 file 험프리 2017.01.31 52
696 이 달의 기술자료 - 2017년 02월 file 험프리 2017.01.31 110
695 [따라하기] 도서대여 프로그램 만들기 - 3, 도서관리 기능 개발 [1] file 험프리 2017.01.26 122
694 [따라하기] 도서대여 프로그램 만들기 - 2, 메인화면 개발 [1] file 험프리 2017.01.26 131
693 [따라하기] 도서대여 프로그램 만들기 - 1, 분석, 설계 [3] file 험프리 2017.01.26 185
692 [따라하기] 도서대여 프로그램 만들기 [1] file 험프리 2017.01.19 281
691 RAD Studio(델파이/C++빌더) 모바일 앱 배포하기 관리자 2017.01.16 121
690 델파이에서 사용하는 각 Stream(스트림) 정리 김원경 2017.01.04 427


광고 모듈이 설치되어 있지 않아 실행을 중단합니다..