C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[27451] Re:zipbuilder 사용에 대해서..
하느리 [handebug] 2378 읽음    2003-10-09 15:24
제가 옛날에 만들어 두었던 건데, 쓸모가 있을 지 모르겠네요.

1. ZipBuilder와 관련 파일처리
//---------------------------------------------------------------------------
// 압축하기
// 하나의 압축파일에 여러개의 파일을 압축시킴
// z_name : 압축할 파일명
// t_name : 압축대상 파일명 (DOS의 *, ? 를 포함 가능)
void __fastcall Form1::ZipFile (String &z_name, String &t_name)
{
  if ( FileExists (z_name) )  DeleteFile (z_name);

    Zip->ZipFilename  = z_name;  //Zip은 ZipBuilder Component
    Zip->Verbose      = true;

    // Add as many filespecs as we want to:
    // (MS-DOS Wildcards are OK)
    Zip->FSpecArgs->Add (t_name);

    // Set the AddOptions; these also appear in Property Inspector:
    // NOTE: This is the new "set" syntax
    Zip->AddOptions = Zip->AddOptions << AddHiddenFiles;
    Zip->AddOptions = Zip->AddOptions >> AddEncrypt; // no password
    Zip->Add ();  // do it!
}
//---------------------------------------------------------------------------
// 하나의 파일 압축 풀기
// z_name : 압축파일명
// t_name : 압축해제 대상 파일명 (DOS용 *, ? 사용가능)
//          전체인 경우는 "*.*"
void __fastcall Form1::UnzipFile (String &z_name, String &t_name)
{
  if ( ! FileExists (z_name) )  return;

  Zip->ZipFilename  = z_name;
  Zip->Verbose      = true;

    // We can specify as many filespecs as we want to extract:
    // (MS-DOS Wildcards are OK)
  Zip->FSpecArgs->Add (t_name);

    // Set the ExtrOptions; these also appear in Property Inspector:
    Zip->ExtrOptions = Zip->ExtrOptions << ExtrOverWrite;
    Zip->Extract ();  // do it!
}
//---------------------------------------------------------------------------
2. 메모리 상에서 ZipBuilder 이용하기
// 스트림 압축
// TZipBuilder *Zip : ZipBuilder Component
// TMemoryStream *zip_stream : 압축하고자 하는 스트림
// TMemoryStream *ziped_stream : 압축된 스트림
    zip_stream->Position = 0;
    Zip->AddStreamToStream (zip_stream); // zip_stream을 추가하면, 압축된 스트림이 ZipBuilder 컴포넌트 내의 멤버 ZipStream에 저장됨
    ziped_stream->Clear ();
    ziped_stream->LoadFromStream (Zip->ZipStream);

// 스트림 압축해제
// TMemoryStream *ziped_stream : 압축된 스트림
// TMemoryStream *unzip_stream : 압축해제된 스트림
  ziped_stream->Position = 0;
  Zip->ExtractStreamToStream (ziped_stream);     // 압축해제하면, ZipStream에 압축해제된 스트림 존재함
  unzip_stream->Clear ();
  unzip_stream->LoadFromStream (Zip->ZipStream);


일단 위에 거는 참조하시고요.
원하시는 기능이 없는 파일을 메모리상에서 생성해서 압축하고자 한다면 TFileStream을 이용하면 됩니다.
위의 예에서 TMemoryStream 대신에 TFileStream을 하시면 되져 (ziped_stream, unzip_stream을 이야기하는 것입니다.).



현정환 님이 쓰신 글 :
: 안녕하세요..
:
: zipbuilder 를 사용하려고 합니다..
:
: 예를 들어서 aaa.txt 라는 놈이 있고..
:
: 이 파일을 aaa.zip 에 압축을 하고 싶습니다.
:
: ZipBuilder1->ZipFileName = "aaa.zip" 이라고 주면..
:
: aaa.zip 이 원래 있는 파일일 경우는 상관 없는데
:
: 없는 파일이면 에러가 뜹니다.
:
: 제가 궁금한건 원래 없는 파일을 생성해서 압축을 하려면 어떻게 해야 하죠 ..?

+ -

관련 글 리스트
27450 zipbuilder 사용에 대해서.. 현정환 834 2003/10/09
27451     Re:zipbuilder 사용에 대해서.. 하느리 2378 2003/10/09
27457         Re:Re:zipbuilder 사용에 대해서.. 현정환 1150 2003/10/09
33611             Re:Re:Re:zipbuilder 사용에 대해서.. 하느리 976 2003/10/09
33610             Re:Re:Re:zipbuilder 사용에 대해서.. 하느리 973 2003/10/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.