자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 97992
1573 sqlconnection 사용법을 알고 싶습니다. [1] 덩어리2 2019.12.14 190
1572 [시애틀 출시세미나] Uses절에 없는 유닛의 함수를 사용하면 구문오류가 나는데요. 자동으로 Uses절에 추가할 수 없나요? Humphery 2015.09.11 191
1571 [10.2 도쿄 출시세미나] 리눅스 지원 된다 했는데, 우분투와 레드헷 만되고, CentOS 는 안되나요? 험프리 2017.04.06 191
1570 [축하드립니다!] 개발자 Q&A 게시판 우수 답변자 선정 관리자 2016.12.27 191
1569 출시앨범 앱 개발 따라하기 질문 [2] file syc 2017.08.25 191
1568 HTML5에서 실행파일 구동하기 관련 명령 알고 싶습니다. [1] file 백거 2018.02.01 191
1567 실행시 환경설정에러관련 [Error Error] Invalid PLATFORM [2] 대화마을 2017.03.02 192
1566 컴파일시 Parameter 설정값 때문에 에러가 나옵니다. [1] file 대화마을 2017.03.02 192
1565 StringGrid에서 선택된 값(KEY)로하여 화면을 호출시 Access violation 발생 [3] AllwaysHappy 2017.10.31 192
1564 REST.JSON 적용문의 [1] cleo0917 2018.08.27 192
1563 ems서버 에서 post관련 종결자 2019.08.26 192
1562 10.3.2 Webbrowser 버그인가요? (iOS) file 돌팅 2019.08.31 192
1561 델파이로 iso앱을 개발하려면 mac pc가 있어야 하나요? [1] 델마당쇠 2020.01.24 192
1560 구글스토어 개발자콘솔 앱등록 관련 문의드립니다. 시리온느 2019.03.13 193
1559 VCL Style 지정시 MouseDown문제 크림슨킹 2019.04.16 193
1558 쇼핑몰 결제시스템관련 질문 유정 2019.06.24 193
1557 10.3.3 samples 프로그램 FlashLight을 돌리면 오류가 납니다. [4] 델파이-앱 2020.02.19 193
1556 RAD Server에서 FileStream사용하여 응답보내기 [2] 초보입니다 2020.11.19 193
1555 RAD 스튜디오 베를린 10.1에서 인포믹스 DB를 지원하나요? 험프리 2016.12.08 194
1554 Delphi10.2 평가판 안드로이드 7 안되네요,. [3] 캔나영 2017.08.30 194