자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi [마이그레이션][팁] 텍스트에디터를 이용해 컴포넌트 속성 추가 및 수정 일괄 처리하기
2018.04.18 10:23
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)을 텍스트 에디터로 열면 아래와 같습니다.(일부)
폼파일에는 폼과 컴포넌트의 속성정보가 기록됩니다.(최상단 폼, 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...)
- Notepad++의 줄바꿈 문자는 "\r\n"입니다. 다른 텍스트 에디터의 줄바꿈 문자는 다를 수 있으니 줄바꿈문자를 적절히 변경하시기 바랍니다.
4, 모두 바꾸기 버튼을 눌러 실행 후 결과를 확인합니다. RAD Studio IDE에서도 열어 속성이 변경되었는지 확인합니다.
바꾸기 전
바꾸기 후
여러 파일에 적용 시
1, 찾기 > 파일에서 찾기 메뉴를 선택합니다.
2, 필터와 디렉토리를 선택 후 [모두 바꾸기] 버튼을 이용해 실행합니다.
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."
몇가지 팁 및 주의사항
파일에서 바꾸기 전 모두 찾기로 확인 할 것
여러 파일을 대상으로 진행하는 경우 바꿀대상을 찾기로 검색 후 확인 후 바꾸기 작업을 하는 것이 좋습니다.
작업 전 백업, 테스트 파일에서 1차 진행 후 전체 진행할 것
여러 파일을 대상으로 작업 시 작업을 되돌리기 매우 어렵습니다.
반드시 파일을 백업후 진행합니다.
테스트 파일을 대상으로 검증 후 전체 진행하시기 바랍니다.
작업 진행 후 결과 확인 할 것
테스트 작업 또는 전체 작업 후 변경된 부분을 비교해 확인하고, RAD Studio IDE에서 열기 바랍니다.
텍스트 비교 툴을 이용하면 손쉽게 변경된 부분을 비교 확인할 수 있습니다.
위 화면은 WinMerge(http://winmerge.org/, 프리웨어)를 이용해 변환 전 파일과 변환 후 파일을 비교한 화면입니다.
속성 문자열 중복 및 들여쓰기는 무시
위 작업 시 속성 문자열이 여러번 들어가거나 들여쓰기가 다르게 작업될 수 있습니다.
위 내용은 RAD Studio IDE에서 폼파일을 열고 저장 시 중복된 속성을 하나로 통합되며, 들여쓰기가 올바르게 지정되니 무시해도 됩니다.
Delphi [마이그레이션][팁] 텍스트에디터를 이용해 컴포넌트 속성 추가 및 수정 일괄 처리하기
2018.04.18 10:23
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)을 텍스트 에디터로 열면 아래와 같습니다.(일부)
폼파일에는 폼과 컴포넌트의 속성정보가 기록됩니다.(최상단 폼, 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...)
- Notepad++의 줄바꿈 문자는 "\r\n"입니다. 다른 텍스트 에디터의 줄바꿈 문자는 다를 수 있으니 줄바꿈문자를 적절히 변경하시기 바랍니다.
4, 모두 바꾸기 버튼을 눌러 실행 후 결과를 확인합니다. RAD Studio IDE에서도 열어 속성이 변경되었는지 확인합니다.
바꾸기 전
|
바꾸기 후 |
여러 파일에 적용 시
1, 찾기 > 파일에서 찾기 메뉴를 선택합니다.
2, 필터와 디렉토리를 선택 후 [모두 바꾸기] 버튼을 이용해 실행합니다.
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."
몇가지 팁 및 주의사항
파일에서 바꾸기 전 모두 찾기로 확인 할 것
여러 파일을 대상으로 진행하는 경우 바꿀대상을 찾기로 검색 후 확인 후 바꾸기 작업을 하는 것이 좋습니다.
작업 전 백업, 테스트 파일에서 1차 진행 후 전체 진행할 것
여러 파일을 대상으로 작업 시 작업을 되돌리기 매우 어렵습니다.
반드시 파일을 백업후 진행합니다.
테스트 파일을 대상으로 검증 후 전체 진행하시기 바랍니다.
작업 진행 후 결과 확인 할 것
테스트 작업 또는 전체 작업 후 변경된 부분을 비교해 확인하고, RAD Studio IDE에서 열기 바랍니다.
텍스트 비교 툴을 이용하면 손쉽게 변경된 부분을 비교 확인할 수 있습니다.
위 화면은 WinMerge(http://winmerge.org/, 프리웨어)를 이용해 변환 전 파일과 변환 후 파일을 비교한 화면입니다.
속성 문자열 중복 및 들여쓰기는 무시
위 작업 시 속성 문자열이 여러번 들어가거나 들여쓰기가 다르게 작업될 수 있습니다.
위 내용은 RAD Studio IDE에서 폼파일을 열고 저장 시 중복된 속성을 하나로 통합되며, 들여쓰기가 올바르게 지정되니 무시해도 됩니다.
변환하려는 프로젝트의 폼파일(*.dfm)이 바이너리 기반인 델파이 5 이전버전을 사용하는 경우,
바이너리 폼파일을 텍스트 폼파일로 변환 후 진행하기 바랍니다.
http://tech.devgear.co.kr/delphi_news/415405