새로운 글
새로운 덧글

델파이 프로젝트를 마이그레이션 시 컴포넌트 변경과 속성 변경 등 수작업 요소를 자동화 해 작업시간을 줄여줄 수 있는 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 132
공지 이 달의 기술자료 & 기술레터 관리자 2017.02.06 154
공지 데브기어 강의 - 2017년 5월~2017년 7월 관리자 2015.01.22 5240
공지 RAD Studio(Delphi, C++Builder) 시작하기 관리자 2015.06.30 7667
공지 RAD 스튜디오로 개발된 모바일 앱 사례(17년 5월 2일 업데이트) 험프리 2014.01.16 145002
748 [발표자료] REST API 웹서비스 연동 관리자 2017.05.29 29
747 [REST API][실습] REST API 클라이언트 개발하기(REST Client 이용) 험프리 2017.05.23 54
746 [REST API][실습] REST API 서버 개발하기(엔드포인트 구현, RAD 서버 이용) 험프리 2017.05.23 48
745 [REST API] REST API 이해하기 험프리 2017.05.23 61
744 델파이 코드 분석 도구 험프리 2017.05.16 97
743 애플 개발자 프로그램 구독하지 않고 XCode8을 설정해 iOS앱을 배포하는 방법 험프리 2017.05.15 85
742 안드로이드에서 커스텀 폰트 사용하기 - 델파이 10.2 도쿄 험프리 2017.05.15 50
741 [고객 사례- 조명, 델파이] 나이아가라 폭포 야간 조명 [1] 관리자 2017.05.10 211
740 [업데이트][핫픽스][10,2 도쿄] 툴체인 이슈 핫픽스 험프리 2017.05.10 102
739 [RAD서버] EMS 패키지 프로젝트 시작하기 험프리 2017.04.28 65
738 [RAD서버] EMS 서버 운영환경에 설치하기(독립형 실행파일) 험프리 2017.04.28 81
737 이 달의 기술자료 - 2017년 05월 file 험프리 2017.04.26 145
736 리눅스 서버용 GUI 응용프로그램 만들기(10.2 도쿄 & FMXLINUX 이용) 관리자 2017.04.25 202
735 [환경설정] 아마존 EC2 이용해 리눅스 서버 환경 구축하기 험프리 2017.04.20 149
734 [환경설정] 아마존 EC2 이용해 윈도우 서버 환경 구축하기 [1] 험프리 2017.04.13 171
733 [발표자료] What's NEW! RAD Studio 10.2 도쿄 험프리 2017.04.13 131
732 [고객 사례- 3D, 이미지스캐너, 델파이] mimix 3D 프로필 스캐너 관리자 2017.04.13 144
731 [RAD 서버] 비콘펜스 소개 및 데모(실내외 길찾기, 지역진입 감지하기) [1] 험프리 2017.04.13 100
730 [발표자료] 소개합니다! RAD Studio 10.2 도쿄 관리자 2017.04.06 178
729 이 달의 기술자료 - 2017년 04월 file 험프리 2017.03.30 185


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