새로운 글
새로운 덧글

자유롭게 질의 및 응답을 할 수 있는 게시판이며 어느 누구도 답변을 달아야만 하는 의무는 없습니다. 
  • 제품설치/등록/제품 오류 문의: 설치/등록 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에서 폼파일을 열고 저장 시 중복된 속성을 하나로 통합되며, 들여쓰기가 올바르게 지정되니 무시해도 됩니다.

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2018.8~2018.11 관리자 2015.01.22 5972
공지 유용한 관련 사이트 관리자2 2014.03.20 43204
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 84867
2244 idSMTP 메일 보낼때 라이브러리 문의 [6] 네오 2018.04.20 88
2243 쇼핑몰 결제시스템 연동 문의 지병철 2018.04.23 56
2242 블루투스를 사용하고싶습니다. [1] 쀼뱌라라 2018.04.09 61
» [마이그레이션][팁] 텍스트에디터를 이용해 컴포넌트 속성 추가 및 수정 일괄 처리하기 [1] file 험프리 2018.04.18 180
2240 IBConsole [2] file 토끼왕 2018.04.17 46
2239 C++ Builder 몇가지 빌드오류. [2] junho103 2018.03.27 73
2238 컴파일 오류 RLink32 : Too many resources to handle [1] SamPark 2018.04.16 47
2237 블루투스 송수신 질문이 있습니다. [3] 데브순 2018.03.23 88
2236 xe10.2에서 VKAutoShowMode 가 작동하지 않는 문제 [5] 개발자 2018.04.12 86
2235 베를린으로 안드로이드 개발시 string Grid 클리어는 어떻게 하는지 알고 싶습니다. [1] wiju 2018.04.10 59
2234 No Platform availabel for current project [1] file 까칠스프 2018.04.12 36
2233 Label 색을 변경을 하였는데, 컴파일해서 실행하면 검은색으로 표시됩니다. [6] 하루 2018.04.01 97
2232 컴파일 후 안드로이드 실행하면 cannot find -lIDEAndroidPlatform 에러가 발생합니다. [1] jeongkyu 2018.04.10 34
2231 라인 짤림 현상 문의드립니다. file 돌팅 2018.04.10 36
2230 TListBox 런타임 시 스크롤 위치 변경방법이 궁금합니다. 김태윤 2018.04.09 24
2229 [공유] 델파이에서 C++ 코드를 사용할 수 있나요?(DLL 라이브러리 등) [1] Humphery 2015.03.26 687
2228 "80070002 지정된 파일을 찾을수 없습니다" 라는 에러 발생 [5] 하루 2018.04.01 214
2227 안드로이드 앱에서 사진을 찍어 FPT로 올릴 경우의 문제입니다. [4] 노력짱 2018.03.22 74
2226 웹뷰 브라우저 컨트롤 가능한가요? [2] 굿맨 2018.03.20 66
2225 Linker Error 해결좀 부탁드려요 급합니다 [5] 빛찬 2018.03.29 49



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