Q&A

  • EXE 파일에 파일을 어떻게 추가하죠?
A.EXE 파일은 실행하면 특정 디렉토리에 A.EXE가 포함하고 있는 B,C,D란 파일을 복사하고 싶습니다.
어떻게 하면 실행파일에 파일을 첨부?!할 수 있는지, 그리고 첨부된 파일에 어떻게 접근하는지 궁금합니다.

자동압축풀림과 비슷하겠네요...
2  COMMENTS
  • Profile
    황당한초보 2005.12.30 19:56
    흔히 사용하는 방식은 두가지가 있습니다.
    1. 리소스에 포함시키기
    2. exe파일 끝부분에 덧붙이기

    1번 리소스에 포함시키는 방식은 아래님이 설명하셨구요.
    2번 실행파일 끝부분에 덧붙이는 방식은 TFileStream을 이용하여
    덧붙이고 추출하여 저장한뒤 사용하는 방식입니다.
    (프롬프트상에서 copy ??? a.exe b.exe c.exe ??던가 기억이..ㅎㅎ 암튼 같은 방식..)
    TFileStream으로 검색해보시면 많은 내용이 나올겁니다..

    참고자료 링크
    http://www.delphi.co.kr/zboard/view.php?id=tips&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=Tfilestream&select_arrange=headnum&desc=asc&no=1351
  • Profile
    델마니아 2005.12.29 18:20
    여러가지 방법이 있는데요..
    소스에 포함해도 되고..
    실행파일 끝단에 붙여버리는 방법(요건 안해봤음)
    제경우는 리소스에 넣는거 편하던데요..


    리소스에 넣는 방법도
    .rc파일을 만들어서 직접 .res를 생성해서
    만드는 방법이 있구요..
    델파이 project메뉴의 resource에서 만드는 방법이 있습니다.
    다른 방법은 모르겠네요.
    resouce에서 new->user data로 만드시고.
    생성되 user data에 "리소스이름"을 주시고


    uses Classes
    요거 포함하시구요.

    아래처럼 풀어내시면 됩니다..

    var
        Stream : TStream;
        MemoryStream : TMemoryStream;
    begin

      
        MemoryStream := TMemoryStream.Create;

        Stream := TResourceStream.Create(HInstance, '리소스이름', RT_RCDATA);
        MemoryStream.LoadFromStream(Stream);
        MemoryStream.SaveToFile('c:\생성될파일명');

        MemoryStream .Free;
        Stream.Free;

    end;

    머 예외처리는 알아서 하시구요..
    내용이야 소스보면 금방 이해하실거구

    그런데 이상한 경우가 있더라구요..
    델파의 resource에서 만들경우 다시 풀어낸 데이타가
    1byte씩 틀린경우가 있습니다. 이유는 모르겠네요..
    다른 분들도 그런경우가 있나요?(델파이7)

    그래서 저는 .rc파일로 직접 만듭니다.
    그건 검색해보시면 금방 아실거구요..

    저도 여기서 도움받아서 해결한겁니다.
    위에 소스도 어떤분이 올리신거 베낀겁니다.
    좋은하루 보내세요.