새로운 글
새로운 덧글

델파이 프로젝트를 마이그레이션 시 컴포넌트 변경과 속성 변경 등 수작업 요소를 자동화 해 작업시간을 줄여줄 수 있는 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 670
공지 이 달의 기술자료 & 기술레터 관리자 2017.02.06 302
공지 데브기어 강의 - 2017년 9월~2017년 11월 관리자 2015.01.22 5505
공지 RAD Studio(Delphi, C++Builder) 시작하기 관리자 2015.06.30 8616
공지 RAD 스튜디오로 개발된 모바일 앱 사례(17년 6월 26일 업데이트) 험프리 2014.01.16 146059
484 [XE8] 네이티브 iOS 컨트롤 지원 Humphery 2015.04.13 648
483 [XE8] iOS 64bit 앱개발과 유니버설(armv7 + arm64) 앱개발 [1] Humphery 2015.04.13 1050
482 [XE8] Android 단말기 연결안될때 SDK 확인 및 설치 Humphery 2015.04.11 1503
» reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구 [3] Humphery 2015.04.09 1978
480 모바일 앱 라이프사이클 이벤트 처리하기 Humphery 2015.04.09 849
479 모바일 앱 라이프 사이클 이벤트 처리하기(앱 완전 구동 후 실행하기) [1] Humphery 2015.04.09 623
478 웹에서 어플리케이션 구동하기(ActiveX 사용않고) Humphery 2015.04.09 1052
477 iOS 64bit 배포 시 ITMS-90092 오류 대응 [1] file Humphery 2015.04.09 1253
476 [무료 세미나] 초대합니다! RAD Studio XE8 출시 세미나!(서울&대구) 관리자 2015.04.08 3526
475 [FireDAC Skill Sprints] 8. TFDMemTable: 메모리 기반 데이터셋 사용하기 Humphery 2015.04.06 965
474 [FireDAC Skill Sprints] 9. LocalSQL: DB에서 가져온 데이터(데이터셋)를 대상으로 다시 SQL쿼리 실행하기 Humphery 2015.04.01 884
473 [FireDAC Skill Sprints] 7. FireDAC ETL: 데이터 내보내기, 가져오기 기능 구현하기 Humphery 2015.04.01 1204
472 [FireDAC Skill Sprints] 1. FireDAC 소개 험프리 2015.04.01 953
471 [다음 버전 정보] 비콘(Beacon)으로 접근감지하기 Humphery 2015.03.26 2429
470 "모바일 앱" 개발 또는 유지관리, 데브기어와 해결하세요! file 관리자 2015.03.26 11806
469 최신 업데이트와 패치정보 확인하는 방법 file Humphery 2015.03.26 640
468 이 달의 기술자료 - 2015년 04월 험프리 2015.03.26 5470
467 [다음 버전 정보] iOS 용 64비트 앱 만들고 배포하기 file Humphery 2015.03.25 836
466 [따라하기] FireDAC으로 오라클(Oracle) DB와 연결하기 [1] file 험프리 2015.03.24 1175
465 아이들이 재미있어 할만한 델파이(파이어몽키) 프로젝트 동영상 따라하기 Humphery 2015.03.24 846


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