Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

윈도우 앱 개발시 리소스 파일을 만들고 사용하는 방법


Recommended Posts

알아둘 점!

델파이 폼 디자이너에서 TImage, TImageList 등을 사용하여, 이미지를 넣거나, Project Options 창을 열고, Application > Icons에서 원하는 아이콘 이미지를 넣는 등의 일반적인 경우에는 자동으로 반영되므로, 굳이 이 글에 설명하고 있는 리소스 파일 따로 쓸 필요가 없다. 

애플리케이션을 만들 때, 아이콘 이미지, 폰트 등 외부에 독립된 파일로 있는 데이터를 사용해야 하는 경우가 있다. 이런 외부 데이터를 애플리케이션 안에 넣을 때는 리소스 파일을 사용할 수 있다.  

리소스 파일이란?

델파이에서 만든 애플리케이션이 사용하는 (이미지, 사운드, 텍스트, 폰트, 기타 바이너리 등) 다양한 데이터를 담는데 사용되는 파일이다.
리소스 파일을 프로젝트 안에 포함하면 실행 파일 안에 내장된다.

리소스 파일을 사용할 때의 장단점

실행 파일 안에 데이터가 들어가기 때문에 다음과 같은 장단점이 있다.

  • 장점:
    • 배포가 편하다.
    • 리소스를 빠르게 적재한다.
  • 단점:
    • 실행 파일의 크기가 커진다.
    • 메모리를 많이 사용할 수 있다.

리소스 파일을 만들고 사용하는 방법 따라하기 예제 (델파이)

외부 텍스트 파일(예: MyText.txt) 1 개를 리소스로 추가하고, 그 파일의 텍스트를 폼의 TMemo에서 보여주도록 해보자.

1. 새 VCL 프로젝트를 하나 생성한다

  • 메인 메뉴 > File New > VCL Forms Application 클릭

2. 외부 데이터 파일을 추가한다

  • 메인 메뉴 > Project > Resources and Images… 를 클릭
  • 리소스 매니저가 나타나면, [Add...] 버튼을 클릭하고, 원하는 외부 데이터 파일(예: MyText.txt)을 선택한 후 [OK] 버튼을 클릭한다.
    (이때, 선택한 데이터 파일의 Resource identifier는 자동으로 지정되는 그대로 둔다. 예: Resource_1)

3. 리소스 데이터를 사용할 폼의 UI를 만든다. 

  • 폼 위에 TMemo 1개와 TButton 1개를 올려 놓는다.
    (이때 이 컨트롤들의 Name은 자동으로 지정되는 그대로 둔다. 예: Memo1, Button1)

4. 리소스 데이터를 사용하는 코드를 작성한다.

  • 폼에서 Button1을 선택하고, 오브젝트 인스펙터에서 Events 탭을 클릭하고 그것의 OnClick 이벤트를 더블 클릭하여 디펄트 이벤트 핸들러를 생성한다.
  • 그 이벤트 핸들러 안에 아래 코드를 넣는다.
procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TResourceStream;
begin
  Stream := TResourceStream.Create(HInstance, 'Resource_1', RT_RCDATA);
  try
    Memo1.Lines.LoadFromStream(Stream, TEncoding.UTF8);
  finally
    Stream.Free;
  end;
end;

5. 프로젝트를 실행하여 리소스 데이터를 잘 가져오는 지 확인한다

  • F9를 눌러서 실행한다. MyText.txt 파일에 있는 내용이 Memo1에 그대로 표시될 것이다.


보너스! 혹시 궁금하다면, 리소스 파일을 사용하기 위해 델파이가 무슨 일을 해주었는지 보자.

.rc 파일과 .dres 파일이 만들어 지는 것을 보려면, 메인 메뉴 > Project > Build를 클릭한다.
(참고로, .res 파일은 리소스 매니저에서 외부 데이터 파일을 리소스에 넣으면, 따로 Build를 하지 않아도 만들어진다)

  • 프로젝트 폴더 안에 아래 3개 파일이 생성된다.
    (만약, .rc 파일과 .dres 파일이 없다면, 메인 메뉴 > Project > Build를 클릭한다)
    • <프로젝트이름>.dres
    • <프로젝트이름>Resource.rc
      • 이 리소스 스크립트 파일(.rc)을 메모장에서 열면 리소스를 추가하는 스크립트를 볼 수 있다
        추가되는 리소스 마다: 리소스 Identifier, 리소스의 Type, 리소스의 파일명 기록된다. (Docwiki 도움말 보기)
      • Resources and Images…를 리소스 매니저를 열어 리소스를 추가/삭제/변경하는면, 이 스크립트도 변경된다.
    • <프로젝트이름>.res
  • 프로젝트 소스 코드를 보면 (프로젝트 매니저 창 > 프로젝트 파일 위에서 마우스 오른쪽 버튼 클릭 > View Source 선택) 
    • {$R *.dres} 코드가 추가되었다.
      • 컴파일된 리소스 파일(.dres)을 그 프로젝트 안에 포함하라는 컴파일러 지시어이다. 그러면 그 리소스 파일이 프로젝트 안에서 함께 컴파일 된다.

참고:

  • 메인 메뉴 > Project > Resources and Images…에 대한 DocWiki 도움말
  • 리소스 파일 지원 및 예제에 대한 DocWiki 도움말
  • .rc 파일과 .res 파일에 대한 부연 설명
    • .rc 파일의 스크립트를 이용하여 리소스를 컴파일 하는 기본 도구는 brcc32.exe (설치 폴더/bin/안에 있음)이다.
      메인 메뉴 > Project > Options를 선택하여 프로젝트 옵션 창을 열고 Building > Resource Compiler를 클릭하고 Resource compiler to use 항목을 보면, 디펄트로 이 brcc32.exe가 선택되어 있을것이다. 이처럼 IDE에서 직접 .rc 파일을 읽어서 .res 파일을 만들고 넣어주기 때문에, (특별한 경우가 아니라면) 개발자가 명령줄에서 brcc32.exe를 직접 불러서 사용할 필요는 없다. 혹시라도, .rc 파일 또는 .res 파일을 직접 편집하고 싶다면 자세한 내용은 구글 검색을 하면 쉽게 방법을 알 수 있다. 
이 댓글 링크
다른 사이트에 공유하기

위 글 첫 줄에 있듯이 리소스 파일을 사용하지 않아도, 필요한 이미지 등을 넣을 수 있습니다. 또한 외부 파일을 실행 파일 안에 넣지 않고 함께 배포하는 방법도 있습니다.

그럼에도 불구하고, 리소스 파일 사용을 활용해야 하는 상황이라면, 아래 짧은(4분) 동영상을 참고하세요. 텍스트 파일 이외에도 비트맵, PNG, MP3 등을 리소스 파일로 사용하는 예제를 보여줍니다.

(단, 이 비디오의 코드는 핵심을 전달하기 위해, try,  finally, free 등의 안전 장치 코드는 없이, 순수 기능 코드만 있습니다. 따라서, 실제 사용할 때는 위 글에 있는 try,  finally, free 처럼 안전 장치를 해 주는 것이 좋습니다)

 

이 댓글 링크
다른 사이트에 공유하기

  • Kori changed the title to 윈도우 앱 개발시 리소스 파일을 만들고 사용하는 방법

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.