Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

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


Recommended Posts

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

목차


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

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

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

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

reFind 사용법

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

image.png

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

주요 실행인자

명령프롬프트에서 "reFind.exe /?"를 호출해 사용법과 실행인자에 대한 도움말을 자세히 확인할 수 있다. 그중 핵심 실행인자 몇개만 소개한다.

  • <filemasks> : 치환작업 대상파일(파일마스크와 파일명)을 기입, 공백으로 구분해 복수 등록 가능
    • 예> Source/*.pas Source/*.dfm : Source 경로 하위 모든 소스와 폼파일 대상
  • /S - 하위 디렉토리를 모두 포함해 작업
  • /P:<검색패턴> - 치환대상 검색패턴
  • /R:<치환패턴> - 치환할 패턴
  • /X:<패턴 규칙파일 경로> - 검색과 치환패턴이 여러줄로 입력된 패턴 규칙파일의 경로 지정
  • /I: 대소문자 무시
  • /W: 전체 단어가 일치하는 경우

검색패턴(/P)과 치환패턴(/R) 그리고 패턴 규칙파일(/X)에 등록되는 패턴규칙은 PCRE(Perl호환 정규표현식)을 사용한다.

사용법 예시

모든 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 경로 하위 모든 디렉토리(/S)의 PAS와 DFM 파일을 대상으로 패턴파일(/X)에 등록된 패턴 적용

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

패턴 규칙파일 형식

패턴 규칙파일은 여러 행으로 이뤄진다. 각 행은 하나의 규칙을 나타낸다. 패턴 규칙파일은 /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를 이용해 BDE 프로젝트를 FireDAC으로 마이그레이션 따라하기를 통해 익혀보시기 바랍니다.

이 댓글 링크
다른 사이트에 공유하기

10시간 전, 험프리 said:

Q. 델파이 5 환경을 사용중인데 reFind.exe를 사용할 수 있는 방법이 없을까요 ?

A. reFind.exe는 RAD 스튜디오 XE5 부터 제공하는 기능으로 XE5이상으로 마이그레이션 시 사용가능합니다.

조금 더 구체적으로 아래와 같이 생각되는데, 맞는 지 의견 부탁드립니다.

1. 기술적으로 reFind.exe는 델파이 5 버전 뿐만 아니라 어떠한 델파이 버전에서도 작동한다.

2. reFind.exe는 XE5버전부터 제공되기 시작했으며,  라이선스 규정 상 XE5 그리고 그 이후 버전 이상을 가지고 있어야 합벅적으로 사용할 수 있다. 

3. 변경 대상인 기존의 소스 코드가 어떤 버전에서 만들어진 것이든 관계없이, 변경 후 소스 코드를 다룰 버전 즉 구입한 (XE5와 그 이후 버전) 델파이에 들어있는 reFind.exe는를 사용하는 것이 더 좋다.

4. reFind.exe가 제공되는 델파이에는 이 실행 파일에서 사용할 수 있도록 몇가지 패턴 규칙 파일이 함께 들어있다 (예: BDE를 FireDAC으로 변환하는 규칙 파일, DBExpress를 FireDAC으로 변환하는 규칙 파일). 따라서 목적에 맞게 그냥 사용할 수도 있고, 이런 규칙 파일을 커스터마이징 또는 참고하여 자신만의 규칙 파일을 만들 수 있다.

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

 공유하기

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.