자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 15768
공지 유용한 관련 사이트 관리자2 2014.03.20 54582
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97993
3039 파이어몽키 프로젝트에서 윈도우 메시지 핸들링? [3] 무심객 2013.08.02 5498
3038 XE4의 FireDAC에서 데이터베이스 파일명이나 파일패스에 한글이 있으면 연결시 오류가 발생합니다. [2] 델사냥 2013.08.13 6771
3037 XE4 Professional 구매후 Mobile Add-On Pack을 추가 구매할 수 있는 방법이 있나요? [1] 현자아빠 2013.08.15 5065
3036 파이어몽키에서 스크린의 사이즈 구하는 방법 [1] 관리자 2013.08.19 5594
3035 DB연결 오류 [1] file 괴도코난 2013.08.26 4748
3034 Sample Project 컴파일 시 Error [2] 시녕 2013.08.30 5036
3033 플래시에서 에러가 나네요. [1] J 2013.08.31 4624
3032 델파이 XE2 에서 Chart FX 사용과 관련해서? [1] maizard 2013.09.03 6093
3031 파이어몽키에서 한글입력시 심각한 버그. minders 2013.09.07 5458
3030 파이어몽키에서 한글입력시 심각한 버그. [1] minders 2013.09.07 5422
3029 TeeChart v2013 VCL/FMX 구입하면 XE5에서 호환될까요? [1] 딸기 2013.09.11 7581
3028 XE5 모바일 앱 개발시 핸드폰의 전화번호 정보 가져오는 방법? [2] 강구 2013.09.23 17248
3027 XE5 안드로이드 관련 추가적으로 필요한 사항 [1] c2design 2013.09.23 7627
3026 Object reference not set to an instance of an object [1] file jwill255 2013.09.25 4936
3025 XE5 Link32 error 문의 [1] 살라 2013.10.03 6646
3024 XE5 Trial 에서 PAserver 연결시 오류 문제 [1] file 강구 2013.10.08 6513
3023 델파이 XE5에서 안드로이드 버전은 어디까지 지원합니까 ? 안드로이드 버전에 따라 델파이에서는 어떻게 처리합니까 ? [1] 관리자 2013.10.08 7425
3022 델파이XE5에서 안드로이드 SDK 관리자가 실행이 안됩니다. [1] 관리자 2013.10.08 7693
3021 XE5 안드로이드에서 Usb Accessory 가능? [1] 망치 2013.10.09 7365
3020 iOS 앱배포용 IPA 생성에 관한 문의입니다. [1] 바보고기 2013.10.12 7310