자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

reFind.exe를 이용하면 컴포넌트 종류와 컴포넌트 속성을 변경하는 작업을 자동화 할 수 있습니다.

  • reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구: http://tech.devgear.co.kr/delphi_news/410746

하지만, 아쉽게도 속성을 추가하거나, 2가지 속성을 뒤바꾸는 등의 작업은 제공하지 않습니다.

reFind.exe는 정규표현식을 이용해 폼파일(*.dfm, *.fmx)과 소스파일(*.pas)의 문자열을 찾아서 치환합니다.

위 내용을 그대로 텍스트 에디터에서 작업하는 팁을 공유합니다.

 

(이 글에서는 텍스트 에디터로 NotePad++를 기준으로 설명합니다. 다른 정규표현식 검색을 지원하는 텍스트 에디터를 이용가능합니다.

NotePad++ : 프리웨어 텍스트 에디터(기업 사용 가능), https://notepad-plus-plus.org/ )

 

(이 글은 델파이와 C++빌더 모두 해당됩니다. 폼파일의 구조는 델파이와 C++빌더가 동일합니다.)

정규표현식을 이용한 컴포넌트 속성 추가 원리

델파이 폼파일(*.dfm, *.fmx)을 텍스트 에디터로 열면 아래와 같습니다.(일부)

dfm_texteditor.png

 

폼파일에는 폼과 컴포넌트의 속성정보가 기록됩니다.(최상단 폼, 16라인 부터 컴포넌트 정보)

컴포넌트간의 계층관계는 object 태그안에 포함되는지 여부와 들여쓰기로 표현됩니다.

 

즉, 위의 텍스트 파일에서 필요한 컴포넌트를 찾아 속성문자열을 추가 후 RAD Studio IDE로 열면 속성이 추가됩니다.

속성 추가하기

오래된 버전의 델파이(Delphi5 ~ Delphi7 등)에서 TPanel과 TLabel의 배경색을 지정한 경우 최신버전의 델파이에서 배경색이 표현되지 않는 이슈가 있습니다.

해결 방법은 TPanel의 ParentBackgroud 속성을 False로, TLabel의 Transparent 속성을 False로 변경하면 됩니다.

 

위 해결방법은 간단하지만, 수많은 폼의 TPanel과 TLabel을 찾아다니며 속성을 수정하는 작업은 시간이 많이 소요되고,  실수할 수도 있습니다.

해당 내용을 텍스트 에디터의 정규표현식 검색/치환 기능을 이용해 한번에 처리하는 방법을 설명합니다.

 

작업전 주의사항

이 작업은 많은 파일을 일괄적용 하는 작업으로 잘못 작업 후 작업취소가 매우 어렵습니다.

반드시 파일을 백업 후 테스트 용 파일을 복사 후 해당 파일에서 작업 확인 후 전체적으로 적용하시기 바랍니다.

 

TPanel의 ParentBackgroud = False 속성 추가

1, Notepad++을 실행하고 폼파일 하나를 엽니다.

2, 찾기 > 바꾸기 메뉴를 선택합니다.

3, 아래와 같이 입력 합니다.

 - 찾을 내용 : ": TPanel\r\n"

 - 바꿀 내용 : ": TPanel\r\n    ParentBackground = False\r\n"

 - 검색 모드 : 확장(\n, \r, \t, \0, \x...)

nppp_replace.png

 - Notepad++의 줄바꿈 문자는 "\r\n"입니다. 다른 텍스트 에디터의 줄바꿈 문자는 다를 수 있으니 줄바꿈문자를 적절히 변경하시기 바랍니다.

4, 모두 바꾸기 버튼을 눌러 실행 후 결과를 확인합니다. RAD Studio IDE에서도 열어 속성이 변경되었는지 확인합니다.

바꾸기 전

replace_before.png

 

바꾸기 후

replace_after.png

 

여러 파일에 적용 시

1, 찾기 > 파일에서 찾기 메뉴를 선택합니다.

2, 필터와 디렉토리를 선택 후 [모두 바꾸기] 버튼을 이용해 실행합니다.

replace_files.png

 

TLabel의 Transparent = False 속성 추가

아래 검색어를 사용합니다.

 - 찾을 내용 : ": TLabel\r\n"

 - 바꿀 내용 : ": TLabel\r\n    Transparent = False\r\n"

 

두개의 속성 교체하기

XE3 버전에서 파이어몽키 앱으로 개발 시의 Padding과 Margines이 10 버전에서 뒤바뀌었다는 이슈를 받았습니다.

Padding과 Margins을 교체하는 작업은 아래와 같이 진행할 수 있습니다.

 

1, Padding을 PaddingTemp로 변경

2, Margines를 Padding으로 변경

3, PaddingTemp를 Margins로 변경

 

주의할 점은 다른 곳에서 Padding 또는 Margins 단어를 사용할 수 있으니 검색 시 앞에 공백과 뒤의 마침표를 포함해 검색 및 치환하시기 바랍니다.

 - 찾을 내용 : "  Padding."

 - 바꿀 내용 : "  PaddingTemp."

replace_fmx.png

 

몇가지 팁 및 주의사항

파일에서 바꾸기 전 모두 찾기로 확인 할 것

여러 파일을 대상으로 진행하는 경우 바꿀대상을 찾기로 검색 후 확인 후 바꾸기 작업을 하는 것이 좋습니다.

 

작업 전 백업, 테스트 파일에서 1차 진행 후 전체 진행할 것

여러 파일을 대상으로 작업 시 작업을 되돌리기 매우 어렵습니다.

반드시 파일을 백업후 진행합니다.

테스트 파일을 대상으로 검증 후 전체 진행하시기 바랍니다.

 

작업 진행 후 결과 확인 할 것

테스트 작업 또는 전체 작업 후 변경된 부분을 비교해 확인하고, RAD Studio IDE에서 열기 바랍니다.

텍스트 비교 툴을 이용하면 손쉽게 변경된 부분을 비교 확인할 수 있습니다.

winmerge.png

위 화면은 WinMerge(http://winmerge.org/, 프리웨어)를 이용해 변환 전 파일과 변환 후 파일을 비교한 화면입니다.

 

속성 문자열 중복 및 들여쓰기는 무시

위 작업 시 속성 문자열이 여러번 들어가거나 들여쓰기가 다르게 작업될 수 있습니다.

위 내용은 RAD Studio IDE에서 폼파일을 열고 저장 시 중복된 속성을 하나로 통합되며, 들여쓰기가 올바르게 지정되니 무시해도 됩니다.

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 15767
공지 유용한 관련 사이트 관리자2 2014.03.20 54581
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97989
493 브레이크 포인트 무작동 [3] file 젠틀 2019.05.07 997
492 xe 10.3 에서 lib path 연결 하는 방법은 무엇인지요? [2] 김태현 2018.12.26 998
491 (공유) RAD 스튜디오 10.3.3에서 VCL에서 ImeMode를 imHanguel로 설정 시 자간(글자간격)이 늘어납니다. file 험프리 2020.03.24 1008
490 [XE7] 파이어몽키 프로젝트 생성 시 "No platform available current project" 메시지 발생 Humphery 2015.01.15 1008
489 Incompatible type 에러 [2] gent 2018.11.14 1009
488 IDFTP.List 한글 깨짐에 대한 답변 관련해서 .... [1] jcitec 2015.05.16 1013
487 시애틀버전 아이폰 앱등록시 IPV6 지원문제 [4] 사랑남 2016.07.29 1019
486 IdHTTP 이용시 한글 깨짐현상 file 브로아 2018.05.01 1019
485 [XE3] FireDAC Query 문제입니다.. [3] 술그머니홍구 2015.01.06 1019
484 조금..난해한 질문입니다만...앱개발 테스트 방법에 관한 질문입니다. [2] 준식 2015.01.09 1026
483 google maps api 질문이요 ! [1] nickname 2016.09.03 1027
482 FastReport 5 설치방법 [1] 스카이 2018.07.12 1029
481 Rest Api 질문입니다. [3] 희망나라 2020.01.22 1039
480 [10.4 시드니 신기능] 10.4 시드니와 10.3 리오를 같이 설치해도 되나요? 험프리 2020.06.10 1039
479 Multi Language 적용 관련하여 질문 드립니다. [1] 앰버 2014.12.09 1047
478 앱아이콘과 앱이 실행될때 이미지 변경은 어떻게 하는건가요? [4] file kim 2015.12.01 1048
477 다시 문의 xe7 ios 빌드 중 에러 발생건 문의 [3] file 사랑남 2015.01.10 1051
476 Disconnected session [1] file 우린굉장해 2020.05.15 1052
475 스마트폰을 비콘으로 사용하는 샘플이나 예는 있는지 [2] 화이부동 2016.08.04 1057
» [마이그레이션][팁] 텍스트에디터를 이용해 컴포넌트 속성 추가 및 수정 일괄 처리하기 [1] file 험프리 2018.04.18 1058