새로운 글
새로운 덧글

델파이 프로젝트를 마이그레이션 시 컴포넌트 변경과 속성 변경 등 수작업 요소를 자동화 해 작업시간을 줄여줄 수 있는 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 93
공지 이 달의 기술자료 & 기술레터 관리자 2017.02.06 119
공지 데브기어 강의 - 2017년 5월~2017년 7월 관리자 2015.01.22 5180
공지 RAD Studio(Delphi, C++Builder) 시작하기 관리자 2015.06.30 7408
공지 RAD 스튜디오로 개발된 모바일 앱 사례 험프리 2014.01.16 144477
736 리눅스 서버용 GUI 응용프로그램 만들기(10.2 도쿄 & FMXLINUX 이용) new 관리자 2017.04.25 13
735 [환경설정] 아마존 EC2 이용해 리눅스 서버 환경 구축하기 update 험프리 2017.04.20 57
734 [환경설정] 아마존 EC2 이용해 윈도우 서버 환경 구축하기 [1] 험프리 2017.04.13 97
733 [발표자료] What's NEW! RAD Studio 10.2 도쿄 험프리 2017.04.13 73
732 [고객 사례- 3D, 이미지스캐너, 델파이] mimix 3D 프로필 스캐너 관리자 2017.04.13 97
731 [RAD 서버] 비콘펜스 소개 및 데모(실내외 길찾기, 지역진입 감지하기) [1] 험프리 2017.04.13 45
730 [발표자료] 소개합니다! RAD Studio 10.2 도쿄 관리자 2017.04.06 121
729 이 달의 기술자료 - 2017년 04월 file 험프리 2017.03.30 153
728 [10.2 도쿄] 델파이로 리눅스 기반 웹서비스 제작하기(WebBroker 이용) [1] 험프리 2017.03.30 334
727 블루투스 바코드 스캐너(BI-07) 안드로이드 라이브러리를 델파이에서 연동하는 방법 file 험프리 2017.03.24 226
726 [10.2 도쿄] 기타 개선 사항 김원경 2017.03.24 120
725 [10.2 도쿄] RTL file 김원경 2017.03.24 91
724 [IBLite] IBLite 라이브러리 배포하기 file 험프리 2017.03.24 63
723 [10.2 도쿄] 디버거 기능 김원경 2017.03.23 120
722 [10.2 도쿄] VCL: 고 해상도(DPI) 지원. 김원경 2017.03.23 152
721 [10.2 도쿄] 개발환경 개선사항 file 김원경 2017.03.23 184
720 [10.2 도쿄] FireDAC과 데이터베이스 개선 file 김원경 2017.03.23 155
719 [10.2 도쿄] 파이어몽키의 새로운 기능들 file 김원경 2017.03.23 258
718 [10.2 도쿄] 리눅스 지원을 제공합니다. file 김원경 2017.03.23 192
717 [발표자료] VCL 애플리케이션 확장하기 with RAD 서버 관리자 2017.03.16 121


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