With the ExtractFileToStream method you can extract a specified file from a Zip archive into a stream.
Function:
ExtractFileToStream( Filename: String ): TZipStream;
Description:
Extracts if specified file 'Filename' or else the first file specified in the FSpecArgs property from the archive specified by the ZipFileName property
After this method returns the stream position is at the begin of the stream.
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
resource.zip 파일에는 eye.bmp외에 여러 bmp 파일이 들어있다.
eye.bmp 파일을 unzip해서 image1의 bitmap에 넣어주는 내용이다.
ExtractFileToStream()함수의 파라메터로 AnsiString Filename이 들어간다.
여기서 Filename은 zip 파일의 이름이 아니라 zip 파일 안에 압축되어 있는 내부 파일 이름을
나타낸다.
따라서 아래 sample을 보면 btnPic3Click을 하면 zip파일 안에 있는 eye.bmp을 UnzipToImage()함수로
넘기고 UnzipToImage()함수에서는 ExtractFileToStream()의 파라메터로 eye.bmp을 넣는다.
테스트 결과 zip파일 안에 있는 eye.bmp 파일을 unzip해서 stream에 넣어주고 그 내용을
Bitmap->LoadFromStream()을 통해 image1에 보이게 되는 것을 확인했다.
//---------------------------------------------------------------------------
void __fastcall TForm1::btnPic3Click(TObject* /*Sender*/)
{
UnzipToImage("eye.bmp");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::UnzipToImage(String FileName)
{
if(!ZipBuilder1->Busy)
{
ZipBuilder1->ZipFileName = "resource.zip";
ZipBuilder1->Password = "password";
TZipStream* Stream1 = ZipBuilder1->ExtractFileToStream(FileName);
Stream1->Position = 0; // reset to the beginning of the stream
StaticText1->Caption = "File Size: "+ IntToStr(Stream1->Size);
Image1->Picture->Bitmap->LoadFromStream(Stream1);
}
}
//---------------------------------------------------------------------------
'Borland' 카테고리의 다른 글
SetBkMode - TextOut 할 때 글자 쓴 곳의 배경을 투명하게 하는 함수 (0) | 2009.02.12 |
---|---|
VK_ 가상키 (0) | 2009.01.29 |
Information about Special Windows Folders (0) | 2008.12.10 |
여러 시스템 환경에서 할당가능한 메모리 (0) | 2008.08.23 |
Subversion Dump/Load (0) | 2008.07.18 |