Q&A

  • avi 파일을 프로그램 컴파일 할때 실행파일에 같이 담을수 있나요?
Tanimate 컴포넌트를 사용했을때 CommonAvi 속성에서 제공하는 것 이외에
별도로 avi파일을 제작하여 삽입하고 싶습니다.
프로그램을 실행시 filename속성을 이용하면 파일경로를 읽어서 그 해당 avi파일을 불러와 보여주는거 같은데 프로그램 컴파일시 avi파일까지 묶어서 컴파일하여 별도로 avi파일 없이 실행프로그램을 만들수 있나요?

어떤분이 resource로 구겨넣으면 된다고 .res파일에 넣으라고 하셨는데..
그게 무슨 소린지 이해를 못해서... ^^;;
2  COMMENTS
  • Profile
    윤수아 2004.03.19 19:18
    어떤분이 resource로 구겨넣으면 된다고 .res파일에 넣으라고 하셨는데..
    그게 무슨 소린지 이해를 못해서... ^^;;

    이게 무슨 말이냐면요... 실행화일에 리소스를 포함시켜주는 방법을 쓰라는 건데요.. 우리가 프로젝트를 하나 짜고 실행화일을 만들면... xxxx.res라는 화일이 생기고요 거기에 디폴트로 아이콘 이미지가 들어가거든요... 그래서 특별히 아이콘을 따로 지정하지 않으면 델파이 디폴트가 실행 아이콘이 되는거거든요..
    암튼 하는 방법은...
    먼저 rc 화일을 만들어야 하고요...rc화일은 내가 어떤 리소스를 쓰겠다고 정의해주는 Text 화일이고요 이걸 brcc32라는 명령어를 써서 컴파일 하면 res 화일이 만들어지고 프로그램에서는 해당 res를 포함한 후 다시 한번 재 컴파일이 해주면 되는거거든요....

    1.rc 화일 만드는 법.
    울트라에디터든 메모장이던간에...열고서
    AAA AVI "***.avi"
    이렇게 쓰고 그 화일을 ****.rc로 저장합니다.
    (이름은 임의로 주세요.. 전 그냥 avi.rc로 했다 그러고 설명할께요)
    여기서 AAA는 임의로 정한 그 리소스의 이름이 되는 거구요...(프로그램상에서는 이 이름으로 그 리소스에 접근하게 됩니다)
    ***.avi는 님이 갖고 계신 avi화일이름을 넣어주시면 되요

    2.brcc32 명령어를 이용해서 (이게 뭔지 모르시면 윈도우 탐색기에서 검색을 해보시면 있으실거에요) rc화일을 컴파일 합니다.
    컴파일할때 brcc32와 rc화일 그리고 avi 화일이 한 디렉토리에 있으면 편합니다.. (rc화일과 avi화일은 무조건 한 디렉토리에 있도록 해주셔야 하고요 brcc32 쓸때 디렉토리까지 써주기 구찮으니까 그냥 brcc32도 같은 디렉토리로 복사해오세요) 그리고 도스창을 열어서 해당 디렉토리로 커서를 옮기시고요
    해당 디렉토리>brcc32 avi.rc avi.res
    일케 타이핑하시고 엔터 누르시면...별 이상이 없다면 그 디렉토리에
    avi.res 화일이 생겨요...
    별 이상이 있을경우는 디렉토리에 모든게 있는지 확인하시고 아까
    AAA AVI "***.avi" 에서 "***.avi" 이름을 내가 갖고 있는 avi화일 이름으로 정확히 줬는지 확인해보세요.

    3.res를 포함시켜 컴파일 하기..
    이제 님의 프로젝트가 있는 디렉토리로 avi.res 화일을 가져온 다음에
    프로젝트를 열고 .. 그 리소스를 쓸 unit에 혹은 프로젝트 소스에 그 리소스를 쓰겠다고 명시해요..방법은..form이라면 소스중에 {$R *.dfm} 일케 되어 있는 밑에 줄에 {$R avi.res} 라고 넣어주시고..프로젝트 소스라면 {$R *.res} 일케 되어 있는 밑에 줄에 {$R avi.res} 라고 넣어주세요.. 여기저기 unit에서 쓰는 avi 화일이였다면...프로젝트 소스에 넣어주시는게 좋겠죠...
    그리고 컴파일을 하세요. (Ctrl +F9)로 런컴파일 해주시면 비교가 확실한데
    {$R avi.res}이 한줄을 넣고 런컴파일한 후에 실행화일 크기와
    그 한줄을 뺀 후에 런컴파일한 후에 실행화일 크기를 비교해보세요..
    크기가 확 달라지죠... 실행화일안에 리소스가 포함되게 되므로 실행화일 크기가 커집니다...

    4.이제 확인~
    만약에 그 avi를 돌릴 컴포넌트 이름이 animate1이라면...전엔 filename에 파일을 지정해줬는데 이제는 그걸 지우고 코딩으로
    animate1.ResName = 'AAA';라고 해줘요 (프로그램 열리자마자 그 avi가 올라와야하는 거면 폼show이벤트나 그런데서.. 뭐 버튼 눌렀을때 avi가 로딩된다면 버튼 클릭 이벤트에..등등)
    그리고 프로그램을 실행해보세요.. 위에 과정이 잘되었다면 animate1에 해당 avi이 올라와 있을거에요..

    이제 그 실행화일을 단독으로 아무 디렉토리에나 복사해서 실행해보세요.. 잘 돌아갈겁니다..avi 화일이나 res 화일을 가지고 다닐 필요없이 그 실행화일 단독으로 배포해도 그 avi는 프로그램상에 잘 로딩될 거에요...

    ㅎㅎ 써놓고보니 굉장히 기네요... 그냥 보여드리면 쉬운데..말로하니까 그래요.. 해보시고 막히시는 곳에서..다시 질문하세요.




  • Profile
    이한규 2004.03.19 22:25
    친절한 답변 다시 한번 감사드립니다. 좋은 하루 되세요~