46 ASSERT0( pDll != NULL,
"CArchiver()",
"正しいアーカイバ管理クラスが指定されていません。" );
51 ASSERT0( pDll->
IsReady(),
"CArchiver()",
"使用可能なアーカイバ管理クラスが指定されていません。" );
56 ::GetTempPathA(MAX_PATH, m_strWorkDir.
GetBuffer(MAX_PATH));
67 CStr s = m_strArcFile;
80 if (
ToInt(::GetFileAttributes(lpszArcFile)) == -1 )
82 r = (::GetLastError() == ERROR_FILE_NOT_FOUND);
90 m_strArcFile = lpszArcFile;
102 m_strWorkDir = lpszWorkDir;
113 int Delete(LPCTSTR lpszName, LPCTSTR lpszOption = NULL)
119 return m_Exec(m_pDll->
EC_Delete, lpszName, lpszOption);
136 return m_ExecList(m_pDll->
EC_Delete, vs, lpszOption);
147 int Extract(LPCTSTR lpszName, LPCTSTR lpszOption = NULL)
153 return m_Exec(m_pDll->
EC_Extract, lpszName, lpszOption);
170 return m_ExecList(m_pDll->
EC_Extract, vs, lpszOption);
184 if ( ! m_strArcFile.
IsEmpty() )
193 _vb.
SetSize((r == 0) ? dwSize : 0);
240 int Attract(LPCTSTR lpszName, LPCTSTR lpszOption = NULL)
246 return m_Exec(m_pDll->
EC_Attract, lpszName, lpszOption);
263 return m_ExecList(m_pDll->
EC_Attract, vs, lpszOption);
279 if ( ! m_strArcFile.
IsEmpty() )
296 bool m_IsReady(
void)
const
305 return m_pDll->
Execute(cmd, m_strArcFile, m_strWorkDir,
CAscii(lpszName),
CAscii(lpszOption));
307 return m_pDll->
Execute(cmd, m_strArcFile, m_strWorkDir, lpszName, lpszOption);
315 if ( lpszOption != NULL )
317 strContent += lpszOption;
318 strContent +=
"\r\n";
322 strContent +=
CAscii(vs[i]);
323 strContent +=
"\r\n";
327 int r = m_Exec(cmd,
"@" + strName, NULL);
#define loop(VAR, CNT)
loop構文.
@ EC_ExtractDir
抽出(Directory付き)
bool IsReady(void) const
[確認] DLL準備確認
bool CheckArchive(LPCSTR lpszArcFile, const int iMode)
[確認] ファイル形式確認
int Execute(ECommand cmd, LPCSTR lpszArcFile, LPCSTR lpszPath, LPCSTR lpszFilter, LPCSTR lpszOption=NULL)
[実行] コマンド実行
int CompressMem(LPCSTR lpszArcFile, LPCSTR lpszName, time_t time, WORD wAttr, const BYTE *lpBuf, DWORD &_dwSize, LPCSTR lpszOption=NULL)
[実行] メモリから格納
int ExtractMem(LPCSTR lpszArcFile, LPCSTR lpszName, BYTE *_lpBuf, size_t &dwSize, LPCSTR lpszOption=NULL)
[実行] メモリに抽出
CArchiver(CArchiverDllHandler *pDll)
コンストラクタ
int Extract(const CStrVector &vs, LPCTSTR lpszOption=NULL)
[操作] 展開.
int Extract(LPCTSTR lpszName, LPCTSTR lpszOption=NULL)
[操作] 取得.
int ExtractWithDirectory(const CStrVector &vs, LPCTSTR lpszOption=NULL)
[操作] 展開.
int ExtractMem(LPCTSTR lpszName, CByteVector &_vb, LPCTSTR lpszOption=NULL)
[操作] 展開
void SetWorkDirectory(LPCTSTR lpszWorkDir)
[設定] 作業ディレクトリ指定
bool SetTargetArchiveFile(LPCTSTR lpszArcFile)
[設定] 対象アーカイブ指定
CStr GetTargetArchiveFile(void) const
[取得] 対象アーカイブ取得
int ExtractWithDirectory(LPCTSTR lpszName, LPCTSTR lpszOption=NULL)
[操作] 展開.
int AttractMem(LPCTSTR lpszName, time_t time, WORD wAttr, const CByteVector &vb, LPCTSTR lpszOption=NULL)
[操作] メモリから格納
int Attract(LPCTSTR lpszName, LPCTSTR lpszOption=NULL)
[操作] 格納.
int Delete(LPCTSTR lpszName, LPCTSTR lpszOption=NULL)
[操作] 削除.
int Delete(const CStrVector &vs, LPCTSTR lpszOption=NULL)
[操作] 削除.
int Attract(const CStrVector &vs, LPCTSTR lpszOption=NULL)
[操作] 格納.
bool IsEmpty(void) const
[確認] 空チェック
void ReleaseBuffer(void)
[操作] 割り当てたバッファを開放.
size_t GetLength(void) const
[取得] 文字列長
const_iterator begin(void) const
[反復] 先頭const_iterator.
TYP * GetBuffer(size_t iLength=0)
[操作] 書き込みバッファ要求.
CStr Create(void)
[操作] 作成.
virtual size_t GetSize(void) const
[取得] サイズ取得
TYP * GetBuffer(size_t size=0)
[操作] データアドレス取得
void ReleaseBuffer(void)
[操作] データの管理を元に戻す.
virtual bool SetSize(size_t size)
[操作] サイズ指定
virtual const TYP * ReferBuffer(void) const
[取得] データアドレス取得
TNB::CStrT< char > CAscii
ASCII文字列クラス
DWORD ToDword(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
int ToInt(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).