home *** CD-ROM | disk | FTP | other *** search
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #include <typeinfo.h>
- #pragma hdrstop
-
- #include "LHPRGDLG.hpp"
- #include "DEMOCBF.h"
-
- //---------------------------------------------------------------------------
- #pragma package( smart_init )
- #pragma link "ARCHIVES"
- #pragma resource "*.dfm"
- TfrmDemoCB *frmDemoCB;
- //---------------------------------------------------------------------------
-
- const
- AnsiString ArchiveFileName = "test.lzh";
-
- inline char* PChar( AnsiString S ){
- return S.c_str();
- }
- inline AnsiString __fastcall IntToHex( unsigned value,int digits ){
- return IntToHex( int( value ),digits );
- }
-
- //---------------------------------------------------------------------------
- __fastcall TfrmDemoCB::TfrmDemoCB( TComponent* Owner ):TForm( Owner ){
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::FormShow( TObject* Sender ){
- Application->HintPause = 500;
- Application->HintHidePause = 9999;
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button01Click( TObject* Sender ){
- // âtâ@âCâïé¬è∙é╔éáé┴é╜éτìφÅ£é╡é─é¿é¡
- // âfâéé╚é╠é┼Åφé╔ê│Åkô«ì∞é≡é│é╣éΘé╜é▀
- if( FileExists( ArchiveFileName )) DeleteFile( ArchiveFileName );
-
- TArchiveFile* ArchiveFile = new TArchiveFile( this );
- try {
- // Åæî╔âtâ@âCâïû╝é╠ÄwÆΦ
- ArchiveFile->FileName = ArchiveFileName; // ègÆúÄqé≡ÄwÆΦé╡é╜é╠é┼âAü[âJâCâoé╠ÄwÆΦé═òsùv
- // ArchiveFile->ArchiverType = atLha; // ÄwÆΦé╖éΘÅΩìçé═é▒é±é╚òùé╔üB
-
- // âIâvâVâçâôÄwÆΦé╠ùß
- ArchiveFile->Options->x = 1; // âfâBâîâNâgâèÅεò±é≡ïLÿ^ LHA é╠ -x1 âIâvâVâçâôé╔æèôû
- ArchiveFile->Options->jso = 1; // ïñùLâGâëü[é╠ÅΩìçé╔Åêù¥é≡æ▒ìs LHA é╠ -jso1 âIâvâVâçâôé╔æèôû
- ArchiveFile->OutputSize = 8192; // Åoù═âoâbâtâ@âTâCâYé≡ÄwÆΦ
-
- if( !CheckBox1->Checked ){ // îoë▀ö±ò\ĪÄwÆΦé╚é╡üH
- ArchiveFile->Options->n = 1;
- }
- if( CheckBox2->Checked ){ // îoë▀âCâxâôâgé≡ùLî°é╔é╖éΘ
- ArchiveFile->OnProgress = ArchiveFileProgress;
- }
-
- int cond;
- // âtâ@âCâïê│Åké≡Ä└ìs
- // ÄwÆΦò√û@éPüFâtâ@âCâïÉöé¬Å¡é╚éóÅΩìçé╚é╟é╔Ägùp
- if( CheckBox3->Checked ){ // ô╞Ä⌐â_âCâAâìâOò\ĪéáéΦüH
- cond = dlgArchiverProgress->PackFiles( ArchiveFile,NULL,"",OPENARRAY( TVarRec,( "*.PAS","*.TXT","TEST\\*.*" )));
- }else{
- cond = ArchiveFile->PackFiles( Handle,NULL,"",OPENARRAY( TVarRec,( "*.PAS","*.TXT","TEST\\*.*" )));
- } // éRé┬é▀é╠âIâvâVâçâôé═èεÅÇâfâBâîâNâgâè
-
- // // ÄwÆΦò√û@éQüFâtâ@âCâïÉöé¬æ╜éóÅΩìçé╚é╟é╔Ägùp
- // char* FileList[] = { "*.PAS","*.TXT","TEST\\*.*",NULL };
- // int cond = ArchiveFile->PackFiles( Handle,NULL,"",OPENARRAY( TVarRec,( FileList )));
-
- // Ä└ìsîïë╩é≡ò\Ī
- Edit1->Text = ArchiveFile->CmdLine; // É╢ɼé╡é╜âRâ}âôâhâëâCâôé≡ò\Ī
- Edit2->Text = IntToHex( cond,4 ); // û▀éΦÆlé≡ò\Ī
- Memo1->Lines->SetText( ::PChar( ArchiveFile->Output ));
- // // Åoù═âoâbâtâ@é╠ôαùeé≡ò\Ī
- }
- __finally{
- ArchiveFile->Free();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button02Click( TObject* Sender ){
- TArchiveFile* ArchiveFile = new TArchiveFile( this );
- try{
- // Åæî╔âtâ@âCâïû╝é╠ÄwÆΦ
- ArchiveFile->FileName = ArchiveFileName; // ègÆúÄqé≡ÄwÆΦé╡é─éóéΘé╠é┼âAü[âJâCâoé╠ÄwÆΦé═òsùv
- if(( ArchiveFile->CheckArchive( CHECKARCHIVE_FULLCRC,0 ) & 0x7FFF ) != 0 ){
- Application->MessageBox( "Åæî╔é═É│Åφé┼é╖üB","Åæî╔â`âFâbâN",MB_OK+MB_ICONINFORMATION );
- }else{
- Application->MessageBox( "òsÉ│é╚Åæî╔é┼é╖üB","Åæî╔â`âFâbâN",MB_OK+MB_ICONEXCLAMATION );
- }
- }__finally{
- ArchiveFile->Free();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button03Click( TObject* Sender ){
- TArchiveFile* ArchiveFile = new TArchiveFile( this );
- try{
- // Åæî╔âtâ@âCâïû╝é╠ÄwÆΦ
- ArchiveFile->FileName = ArchiveFileName; // ègÆúÄqé≡ÄwÆΦé╡é─éóéΘé╠é┼âAü[âJâCâoé╠ÄwÆΦé═òsùv
-
- // âIâvâVâçâôÄwÆΦé╠ùß
- ArchiveFile->Options->x = 1; // âfâBâîâNâgâèôWèJéáéΦ
- // // âfâBâîâNâgâèÅεò±é≡ïLÿ^ LHA é╠ -x1 âIâvâVâçâôé╔æèôû
- ArchiveFile->Options->jso = 1; // ïñùLâGâëü[é╠ÅΩìçé╔Åêù¥é≡æ▒ìs LHA é╠ -jso1 âIâvâVâçâôé╔æèôû
- ArchiveFile->Options->jse = 1; // ôWèJÄ₧é╠ÅπÅæé½âIü[âvâôôÖé╠Ä╕ösé≡âGâëü[é╞é╖éΘ
- ArchiveFile->OutputSize = 8192; // Åoù═âoâbâtâ@âTâCâYé≡ÄwÆΦ
-
- if( !CheckBox1->Checked ){ // îoë▀ö±ò\ĪÄwÆΦé╚é╡üH
- ArchiveFile->Options->n = 1;
- }
-
- if( CheckBox2->Checked ){ // îoë▀âCâxâôâgé≡ùLî°é╔é╖éΘ
- ArchiveFile->OnProgress = ArchiveFileProgress;
- }
-
- int cond;
- // âtâ@âCâïôWèJé≡Ä└ìs
- // FileList é╔ NULL é≡ÄwÆΦé╖éΘé╠é┼é╖é╫é─é╠âtâ@âCâïé≡ôWèJ
- if( CheckBox3->Checked ){ // ô╞Ä⌐â_âCâAâìâOò\ĪéáéΦüH
- cond = dlgArchiverProgress->UnpackFiles( ArchiveFile,NULL,"TEST\\",OPENARRAY( TVarRec,( NULL )));
- }else{
- cond = ArchiveFile->UnpackFiles( Handle,NULL,"TEST\\",OPENARRAY( TVarRec,( NULL )));
- }
-
- // Ä└ìsîïë╩é≡ò\Ī
- Edit1->Text = ArchiveFile->CmdLine; // É╢ɼé╡é╜âRâ}âôâhâëâCâôé≡ò\Ī
- Edit2->Text = IntToHex( cond,4 ); // û▀éΦÆlé≡ò\Ī
- Memo1->Lines->SetText( ::PChar( ArchiveFile->Output ));
- // // Åoù═âoâbâtâ@é╠ôαùeé≡ò\Ī
- }__finally{
- ArchiveFile->Free();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button04Click( TObject* Sender ){
- TArchiveFile* ArchiveFile = new TArchiveFile( this );
- TStringList* FileList = new TStringList;
- try{
- // ListBox1 é╠æIæ≡é│éΩé─éóéΘéαé╠é╛é»é≡
- // ìφÅ£æ╬Å█é╠âtâ@âCâïû╝é≡ FileList é╔ôoÿ^
- for( int i=0 ; i < ListBox1->Items->Count ; i++ ){
- if( ListBox1->Selected[i] ){
- FileList->Add( ListBox1->Items->Strings[i] );
- }
- }
-
- if( !CheckBox1->Checked ){ // îoë▀ö±ò\Īé╔é╖éΘ
- ArchiveFile->Options->n = 1;
- }
- if( CheckBox2->Checked ){ // îoë▀âCâxâôâgé≡ùLî°é╔é╖éΘ
- ArchiveFile->OnProgress = ArchiveFileProgress;
- }
-
- // Åæî╔âtâ@âCâïû╝é╠ÄwÆΦ
- ArchiveFile->FileName = ArchiveFileName; // ègÆúÄqé≡ÄwÆΦé╡é╜é╠é┼âAü[âJâCâoé╠ÄwÆΦé═òsùv
- // ArchiveFile->ArchiverType = atLha; // ÄwÆΦé╖éΘÅΩìçé═é▒é±é╚òùé╔üB
-
- // âIâvâVâçâôÄwÆΦé╠ùß
- ArchiveFile->Options->x = 1; // âfâBâîâNâgâèÅεò±é≡ïLÿ^ LHA é╠ -x1 âIâvâVâçâôé╔æèôû
- ArchiveFile->Options->jso = 1; // ïñùLâGâëü[é╠ÅΩìçé╔Åêù¥é≡æ▒ìs LHA é╠ -jso1 âIâvâVâçâôé╔æèôû
- ArchiveFile->OutputSize = 8192; // Åoù═âoâbâtâ@âTâCâYé≡ÄwÆΦ
-
- int cond;
- // Åæî╔ôαâtâ@âCâïìφÅ£é≡Ä└ìs
- if( CheckBox3->Checked ){ // ô╞Ä⌐â_âCâAâìâOò\ĪéáéΦüH
- cond = dlgArchiverProgress->RemoveItems( ArchiveFile,NULL,"",OPENARRAY( TVarRec,( FileList )));
- }else{
- cond = ArchiveFile->RemoveItems( Handle,NULL,"",OPENARRAY( TVarRec,( FileList )));
- }
- // Ä└ìsîïë╩é≡ò\Ī
- Edit1->Text = ArchiveFile->CmdLine; // É╢ɼé╡é╜âRâ}âôâhâëâCâôé≡ò\Ī
- Edit2->Text = IntToHex( cond,4 ); // û▀éΦÆlé≡ò\Ī
- Memo1->Lines->SetText( ::PChar( ArchiveFile->Output ));
- // // Åoù═âoâbâtâ@é╠ôαùeé≡ò\Ī
- }__finally{
- ArchiveFile->Free();
- FileList->Free();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button05Click( TObject* Sender ){
- TArchiveFile* ArchiveFile = new TArchiveFile( this );
- try{
- // Åæî╔âtâ@âCâïû╝é╠ÄwÆΦ
- ArchiveFile->FileName = ArchiveFileName; // ègÆúÄqé≡ÄwÆΦé╡é─éóéΘé╠é┼âAü[âJâCâoé╠ÄwÆΦé═òsùv
-
- // âIâvâVâçâôÄwÆΦé╠ùß
- ArchiveFile->OutputSize = 8192; // Åoù═âoâbâtâ@âTâCâYé≡ÄwÆΦ
- if( !CheckBox1->Checked ){
- ArchiveFile->Options->n = 1; // îoë▀ö±ò\Īé╔é╖éΘ
- }
-
- ArchiveFile->Options->jso = 1; // ïñùLâGâëü[é╠ÅΩìçé╔Åêù¥é≡æ▒ìs LHA é╠ -jso1 âIâvâVâçâôé╔æèôû
-
- // Åæî╔ôαâtâ@âCâïé╠ìXÉVé≡Ä└ìs
- // FileList é╔ NULL é≡ÄwÆΦé╖éΘé╠é┼é╖é╫é─é╠âtâ@âCâïé≡ìXÉV
- int cond = ArchiveFile->UpdateArchive( Handle,NULL,"",OPENARRAY( TVarRec,( NULL )));
- // // éRé┬é▀é╠âIâvâVâçâôé═èεÅÇâfâBâîâNâgâè
-
- // Ä└ìsîïë╩é≡ò\Ī
- Edit1->Text = ArchiveFile->CmdLine; // É╢ɼé╡é╜âRâ}âôâhâëâCâôé≡ò\Ī
- Edit2->Text = IntToHex( cond,4 ); // û▀éΦÆlé≡ò\Ī
- Memo1->Lines->SetText( ::PChar( ArchiveFile->Output ));
- // // Åoù═âoâbâtâ@é╠ôαùeé≡ò\Ī
- }__finally{
- ArchiveFile->Free();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button06Click( TObject* Sender ){
- TArchiveFile* ArchiveFile = new TArchiveFile( NULL );
- ArchiveFile->FileName = ArchiveFileName; // ègÆúÄqé≡ÄwÆΦé╡é─éóéΘé╠é┼âAü[âJâCâoé╠ÄwÆΦé═òsùv
- ListBox1->Items->Clear(); // âèâXâgâ{âbâNâXé≡âNâèâA
-
- TIndivisualInfo IndivisualInfo; // Åæî╔ôαìÇû┌Åεò±
- ArchiveFile->FindOpen( Handle,0 );
- int done = ArchiveFile->FindFirst( "*.*",IndivisualInfo );
- while( done==0 ){
- // ListBox1->Items->Add( FormatDateTime( "yy-mm-dd hh:mm:ss ",DosDateTimeToDateTime( IndivisualInfo->wDate,IndivisualInfo->wTime ))+ IndivisualInfo->szFileName );
- ListBox1->Items->Add( IndivisualInfo.szFileName );
- done = ArchiveFile->FindNext( IndivisualInfo );
- }
- ArchiveFile->FindClose();
- ArchiveFile->Free();
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button07Click( TObject* Sender ){
- TArchiveFile* ArchiveFile = new TArchiveFile( this );
- try{
- // Åæî╔âtâ@âCâïû╝é╠ÄwÆΦ
- ArchiveFile->FileName = ArchiveFileName; // ègÆúÄqé≡ÄwÆΦé╡é─éóéΘé╠é┼âAü[âJâCâoé╠ÄwÆΦé═òsùv
-
- // âIâvâVâçâôÄwÆΦé╠ùß
- ArchiveFile->Options->x = 1; // âfâBâîâNâgâèÅεò±é≡Äcé╖
- // ArchiveFile->Options->jw = 3; // WinSFXM î`Ä«é≡ÄwÆΦ
- ArchiveFile->Options->gw = 3; // WinSFX32M î`Ä«é≡ÄwÆΦ
- ArchiveFile->Options->jso = 1; // ïñùLâGâëü[é╠ÅΩìçé╔Åêù¥é≡æ▒ìs LHA é╠ -jso1 âIâvâVâçâôé╔æèôû
- ArchiveFile->OutputSize = 8192; // Åoù═âoâbâtâ@âTâCâYé≡ÄwÆΦ
-
- if( !CheckBox1->Checked ){
- ArchiveFile->Options->n = 1; // îoë▀ö±ò\Īé╔é╖éΘ
- }
-
- int cond;
- // è∙æ╢é╠Åæî╔âtâ@âCâïé⌐éτÄ⌐î╚ë≡ôÇÅæî╔é≡É╢ɼ
- if( CheckBox3->Checked ){ // ô╞Ä⌐â_âCâAâìâOò\ĪéáéΦüH
- cond = dlgArchiverProgress->MakeSfx( ArchiveFile,NULL,"" );
- }else{
- cond = ArchiveFile->MakeSfx( Handle,NULL,"" );
- } // // éRé┬é▀é╠âIâvâVâçâôé═èεÅÇâfâBâîâNâgâè
-
- // Ä└ìsîïë╩é≡ò\Ī
- Edit1->Text = ArchiveFile->CmdLine; // É╢ɼé╡é╜âRâ}âôâhâëâCâôé≡ò\Ī
- Edit2->Text = IntToHex( cond,4 ); // û▀éΦÆlé≡ò\Ī
- Memo1->Lines->SetText( ::PChar( ArchiveFile->Output ));
- // // Åoù═âoâbâtâ@é╠ôαùeé≡ò\Ī
- }__finally{
- ArchiveFile->Free();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button08Click( TObject* Sender ){
- TArchiveFile* ArchiveFile = new TArchiveFile( this );
- try{
- // Åæî╔âtâ@âCâïû╝é╠ÄwÆΦ
- ArchiveFile->FileName = ArchiveFileName; // ègÆúÄqé≡ÄwÆΦé╡é─éóéΘé╠é┼âAü[âJâCâoé╠ÄwÆΦé═òsùv
- ArchiveFile->Options->jso = 1; // ïñùLâGâëü[é╠ÅΩìçé╔Åêù¥é≡æ▒ìs LHA é╠ -jso1 âIâvâVâçâôé╔æèôû
- ArchiveFile->OutputSize = 8192; // Åoù═âoâbâtâ@âTâCâYé≡ÄwÆΦ
-
- // âIâvâVâçâôÄwÆΦé╠ùß
- if( !CheckBox1->Checked ){ // îoë▀ö±ò\Īé╔é╖éΘ
- ArchiveFile->Options->n = 1;
- }
- if( CheckBox2->Checked ){ // îoë▀âCâxâôâgé≡ùLî°é╔é╖éΘ
- ArchiveFile->OnProgress = ArchiveFileProgress;
- }
-
- // Åæî╔ôαâtâ@âCâïé╠ɵô¬ 300 âoâCâgé≡âüâéâèÅπé╔ôWèJ
- AnsiString Buffer;
- DWORD dwWriteSize;
- int cond;
- Buffer.SetLength( 300 );
- if( CheckBox3->Checked ){ // ô╞Ä⌐â_âCâAâìâOò\ĪéáéΦüH
- cond = dlgArchiverProgress->UnpackToMem( ArchiveFile,NULL,"ARCHIVES.PAS",::PChar( Buffer ),300,&dwWriteSize );
- }else{
- cond = ArchiveFile->UnpackToMem( Handle,NULL,"ARCHIVES.PAS",::PChar( Buffer ),300,&dwWriteSize );
- }
-
- // Ä└ìsîïë╩é≡ò\Ī
- Edit1->Text = ArchiveFile->CmdLine; // É╢ɼé╡é╜âRâ}âôâhâëâCâôé≡ò\Ī
- Edit2->Text = IntToHex( cond,4 ); // û▀éΦÆlé≡ò\Ī
- Memo1->Lines->SetText( ::PChar( ArchiveFile->Output ));
- // // Åoù═âoâbâtâ@é╠ôαùeé≡ò\Ī
- }__finally{
- ArchiveFile->Free();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Button09Click( TObject* Sender ){
- Close();
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::Memo1DblClick( TObject* Sender ){
- if( Sender->ClassNameIs( "TMemo" )){
- (( TMemo* )( Sender ))->Lines->Clear();
- }
-
- if( Sender->ClassNameIs( "TListBox" )){
- (( TListBox* )( Sender ))->Items->Clear();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::ArchiveFileProgress( TObject* Sender,int State,LPEXTRACTINGINFOEX lpEis,bool &Abort ){
- ShowInfo( State,lpEis );
- }
- //---------------------------------------------------------------------------
- void __fastcall TfrmDemoCB::ShowInfo( UINT State,LPEXTRACTINGINFOEX lpEis ){
- switch( State ){
- case ARCEXTRACT_BEGIN: // èYôûâtâ@âCâïé╠Åêù¥é╠èJÄn
- Memo2->Lines->Add( "==[ARCEXTRACT_BEGIN]========" );
- break;
- case ARCEXTRACT_INPROCESS: // èYôûâtâ@âCâïé╠ôWèJÆå
- Memo2->Lines->Add( "==[ARCEXTRACT_INPROCESS]====" );
- break;
- case ARCEXTRACT_END: // Åêù¥ÅIù╣üAè╓ÿAâüâéâèé≡èJò·
- Memo2->Lines->Add( "==[ARCEXTRACT_END]==========" );
- break;
- case ARCEXTRACT_OPEN: // èYôûÅæî╔é╠Åêù¥é╠èJÄn
- Memo2->Lines->Add( "==[ARCEXTRACT_OPEN]=========" );
- break;
- case ARCEXTRACT_COPY: // âÅü[âNâtâ@âCâïé╠Åæé½û▀é╡
- Memo2->Lines->Add( "==[ARCEXTRACT_COPY]=========" );
- break;
- case 5: // ë≡ôÇÆåüH
- Memo2->Lines->Add( "==[5]=======================" );
- break;
- case 6: // ê│Åké╠ÅΩìçé═üCé▒é╠âüâbâZü[âWé┼Äné▀é─æSé─é╠âüâôâoé¬ùLî°é╞é╚éΘ
- Memo2->Lines->Add( "==[6]=======================" );
- break;
- }
- if( lpEis==NULL ){
- Memo2->Lines->Add( " lpEis :NULL" );
- }else{
- Memo2->Lines->Add( AnsiString( " dwFileSize :" )+IntToStr( lpEis->exinfo.dwFileSize ));
- Memo2->Lines->Add( AnsiString( " dwWriteSize :" )+IntToStr( lpEis->exinfo.dwWriteSize ));
- Memo2->Lines->Add( AnsiString( " szSourceFileName:" )+lpEis->exinfo.szSourceFileName );
- Memo2->Lines->Add( AnsiString( " szDestFileName :" )+lpEis->exinfo.szDestFileName );
- Memo2->Lines->Add( AnsiString( " dwCompressedSize:" )+IntToStr( lpEis->dwCompressedSize ));
- Memo2->Lines->Add( AnsiString( " dwCRC :0x")+IntToHex( lpEis->dwCRC ,4 ));
- Memo2->Lines->Add( AnsiString( " uOSType :0x")+IntToHex( lpEis->uOSType,4 ));
- Memo2->Lines->Add( AnsiString( " wRatio :" )+IntToStr( lpEis->wRatio ));
- Memo2->Lines->Add( AnsiString( " wDate :0x")+IntToHex( lpEis->wDate ,4 ));
- Memo2->Lines->Add( AnsiString( " wTime :0x")+IntToHex( lpEis->wTime ,4 ));
- Memo2->Lines->Add( AnsiString( " szAttribute :" )+lpEis->szAttribute );
- Memo2->Lines->Add( AnsiString( " szMode :" )+lpEis->szMode );
- }
- }
-
-