
#ifndef file_h
#define file_h


//[2020.10.01.목][추가]{------------------------------------------
//<class:FileCopyEx> 사용 시에 [진행대화상자] 를 보여주기 위한것.
#include  "GProgressDialog.h"
//}---------------------------------------------------------------


//[2006.09.04.월][완료!!!]
void __fastcall FILE_DeleteBuffer(unsigned char  **pFILEbuffer);

//[2012.02.29.수][완료!!!]
bool __fastcall FILE_Open(AnsiString       pFileName,
                          unsigned char  **prFileBuf,
                          int             *rFileSize);

//[2008.11.26.수][완료!!!]
bool __fastcall FILE_Open2(AnsiString       pFileName,
                           unsigned char  **prFileBuf,
                           int             *rFileSize,
                           int             *rFileHandle);

//[2006.12.16.토][완료!!!]
bool __fastcall FILE_Open_inBUF(AnsiString       pFILEname,
                                unsigned char   *pFILEbuffer,
                                int             *pFILEsize);

//[2011.10.19.수][완료!!!]
bool __fastcall File_Open_Bin_inBuf(AnsiString      pFileName,
                                    unsigned char  *rFileBuf,
                                    int            *rFileSize);

//[2006.10.05.목][완료!!!]
bool __fastcall FILE_Open_forFontResource(AnsiString      pFILEname,
                                          unsigned char  *pFILEbuffer,
                                          int            *pFILEsize);

//[2006.09.05.화][완료!!!]
void __fastcall FILE_Save(AnsiString      pFILEname,
                          unsigned char  *pFILEbuffer,
                          int             pFILEsize);
//[2006.09.27.수][완료!!!]
bool __fastcall FILE_Size(AnsiString   pFILEname,
                          int         *pFILEsize);

//[2009.06.01.월][완료!!!]
bool __fastcall FILE_Get_List_Count_inFOLDER(//검색할 [폴더] 경로.
                                             AnsiString    pFOLDERpath,
                                             //검색할 확장자.
                                             AnsiString    pFILEext,
                                             //지정 폴더 안의 지정 확장자를 가진 파일 목록.
                                             TStringList  *pFILElist,
                                             //지정 폴더 안의 지정 확장자를 가진 파일 수.
                                             int          *pFILEcount);

//[2009.01.28.수][완료!!!]
//[2018.10.06.토][완료!!!]
void __fastcall File_CreateDirectory(char  *pPath);

//[2009.02.07.토][완료!!!]
bool __fastcall File_GetSize(AnsiString   pFileName,
                             int         *rFileSize);

//2009.05.30.토][완료!!!]
void __fastcall  File_Compose(//합성할 문서 목록.
                              TStringList  *pFileList,
                              //함성된 문서를 저장할 경로(경로가 없으면 자동 생성한다).
                              AnsiString    pComposeFileName);

//[2011.05.10.화][완료!!!]
void __fastcall  File_Compose2(//합성할 문서 목록(한개 행이 한개 항목)(모두 [전체 경로]).
                               char  *pFileList,
                               //합성된 문서를 저장할 [전체경로](경로가 없는 경우 강제 생성한다).
                               char  *pComposeFileName);



//[2009.12.07.월][완료!!!]
//[2011.10.23.일][완료!!!]
bool __fastcall HEXFILE_Open_InBuffer(AnsiString       pFileName,
                                      unsigned char   *rFileBuf,
                                      int             *rStartAdr,
                                      int             *rEndAdr);

//[2018.10.09.화][완료!!!]
bool __fastcall File_ReName(//경로이름확장자.
                            char  *pFileName,
                            //이름확장자.
                            char  *pNewNameExt);

//[2018.10.09.화][완료!!!]
bool __fastcall File_Delete(char  *pFileName);

//------------------------------------------------------------------------------
//[디렉토리 관련]---------------------------------------------------------------
//------------------------------------------------------------------------------

//검색할 설정을 정의한다.
#define  d_Directory         0x01  //[디렉토리] 를 대상으로 검사.
#define  d_File              0x02  //[문서] 를 대상으로 검사.

#define  d_NameOnly          0x04  //경로를 제외하고 이름(*.*)만 추출한다.
//[2011.10.18.화][추가!!!]
#define  d_NameExceptExt     0x08  //경로를 제외하고 확장자가 제거된 순수한 [이름] 만 추출한다.
//둘다를 대상으로 하는 경우는 "|" 연산자를 사용한다.

//[2011.10.18.화][완료!!!]
void __fastcall  Dir_Get_FileList_BoundDir(//지정 경로.
                                           AnsiString    pDir,
                                           //검색할 확장자.
                                           AnsiString    pFileExt,
                                           //하위 경로도 전부 검사할 것인가?
                                           bool          pThisDirOnly,
                                           //검색 설정(디렉토리/문서).
                                           int           pOption,
                                           //반환 목록.
                                           TStringList  *rFileList);

//[2009.05.27.수][완료!!!]
void __fastcall  Dir_Get_FileNameList_BoundDir(//지정 경로.
                                               AnsiString    pDir,
                                               //검색할 확장자.
                                               AnsiString    pFileExt,
                                               //하위 경로도 전부 검사할 것인가?
                                               bool          pThisDirOnly,
                                               //검색 설정(디렉토리/문서).
                                               int           pOption,
                                               //검색한 문서목록.
                                               TStringList  *rFileList);



//[2020.10.02.금][완료
void __fastcall Dir_Get_FileList_BoundDir2(//지정 경로.
                                           AnsiString    pDir,
                                           //검색할 확장자.
                                           AnsiString    pFileExt,
                                           //하위 경로도 전부 검사할 것인가?
                                           bool          pThisDirOnly,
                                           //검색 설정(디렉토리/문서).
                                           int           pOption,
                                           //검색한 목록.
                                           TStringList  *rFileList);

//[2020.10.02.금][완료
void __fastcall  Dir_Get_FileNameList_BoundDir2(//지정 경로.
                                                AnsiString    pDir,
                                                //검색할 확장자.
                                                AnsiString    pFileExt,
                                                //하위 경로도 전부 검사할 것인가?
                                                bool          pThisDirOnly,
                                                //검색 설정(디렉토리/문서).
                                                int           pOption,
                                                //검색한 목록.
                                                TStringList  *rFileList);

//[2020.10.02.금][완료!!!]
void __fastcall Dir_Copy(//도착지.
                         AnsiString  pDstDir,
                         //출발지.
                         AnsiString  pSrcDir);

//[2009.09.05.토][완료!!!]
void __fastcall File_Copy(//도착 문서.
                          AnsiString  pDstFileFullName,
                          //출발 문서.
                          AnsiString  pSrcFileFullName);

//[2018.10.13.토][완료!!!]                          
bool __fastcall Dir_Delete(char  *pDir);

//[2020.10.04.일][완료]
bool __fastcall Dir_Delete_Inner(char  *pDir);

//[2020.10.04.일][완료]
bool __fastcall Dir_IsEmpty(char  *pDir);

//[2018.10.10.수][완료!!!]
int __fastcall Dir_Search_File(//지정 경로(반드시 뒤에 "\" 이 붙어 있어야 함).
                               char         *pDir,
                               //찾을 [이름(대/소 문자 구분 없음)]("*" 인 경우는 전부 수집).
                               char         *pSrchName,
                               //찾을 [확장자(대/소 문자 구분 없음)]("*" 인 경우는 전부 수집).
                               char         *pSrchExt,
                               //-------------------------------------------------------
                               //[하위폴더검사 유/무]-----------------------------------
                               //-------------------------------------------------------
                               //지정 폴더만 검사(true)/하위 폴더까지 검사(false).
                               bool          pThisDirOnly,
                               //-------------------------------------------------------
                               //[검사조건:대상]----------------------------------------
                               //-------------------------------------------------------
                               //[폴더] 를 대상으로 검사(true).
                               bool          pOptCls_Dir,
                               //[문서] 를 대상으로 검사(true).
                               bool          pOptCls_File,
                               //둘다 사용 가능.
                               //-------------------------------------------------------
                               //[검사조건:수집종류]------------------------------------
                               //-------------------------------------------------------
                               //[이름확장자] 만 수집.
                               bool          pOptLst_NameExt,
                               //[이름] 만 수집.
                               bool          pOptLst_Name,
                               //둘다 (false) : 전체 [경로이름확장자] 수집.
                               //둘다 (true)  : [이름] 만 수집.
                               //-------------------------------------------------------
                               //[후처리 조건]------------------------------------------
                               //-------------------------------------------------------
                               //[내부경로이름확장자] 만 수집(<pDir> 경로가 제외된 것).
                               bool          pInnerPathOnly,
                               //-------------------------------------------------------
                               //[반환목록]---------------------------------------------
                               //-------------------------------------------------------
                               TStringList  *rList);

//[2018.10.10.수][완료!!!]                          
void __fastcall Dir_Search_File_Core(//지정 경로(반드시 뒤에 "\" 이 붙어 있어야 함).
                                     char         *pDir,
                                     //찾을 [이름(대/소 문자 구분 없음)]("*" 인 경우는 전부 수집).
                                     char         *pSrchName,
                                     //찾을 [확장자(대/소 문자 구분 없음)]("*" 인 경우는 전부 수집).
                                     char         *pSrchExt,
                                     //--------------------------------------------------
                                     //[하위폴더검사 유/무]------------------------------
                                     //--------------------------------------------------
                                     //지정 폴더만 검사(true)/하위 폴더까지 검사(false).
                                     bool          pThisDirOnly,
                                     //--------------------------------------------------
                                     //[검사조건:대상]-----------------------------------
                                     //--------------------------------------------------
                                     //[폴더] 를 대상으로 검사(true).
                                     bool          pOptCls_Dir,
                                     //[문서] 를 대상으로 검사(true).
                                     bool          pOptCls_File,
                                     //둘다 사용 가능.
                                     //--------------------------------------------------
                                     //[반환목록]----------------------------------------
                                     //--------------------------------------------------
                                     TStringList  *rList);


//[API:File_CopyEx]
//{
    //[2020.11.27.금][완료]
    int __fastcall File_CopyEx(char  *pSrcPathNameExt,
                               char  *pDstPathNameExt,
                               //[덮어쓰기] 의 경우는 <true>.
                               bool   pOverWrite,
                               //[진행대화상자] 를 보일지(true) 말지(false) 선택.
                               bool   pViewDialog,
                               //사용하지 않는 경우는 NULL.
                               bool  *pStop);

//}

//[API:File_MoveEx]
//{
    //[2020.12.13.일][완료]
    int __fastcall File_MoveEx(char  *pSrcPathNameExt,
                               char  *pDstPathNameExt,
                               //[덮어쓰기] 의 경우는 <true>.
                               bool   pOverWrite,
                               //[진행대화상자] 를 보일지(true) 말지(false) 선택.
                               bool   pViewDialog,
                               //사용하지 않는 경우는 NULL.
                               bool  *pStop);

//}

//[API:Files_CopyEx]
//{
    //[2020.12.13.일][완료]
    int __fastcall Files_CopyEx(//[출발지:목록] 으로 반드시 [1행:1파일] 로 기술.
                                char  *pSrcList,
                                //[도착지:목록] 으로 반드시 [1행:1파일] 로 기술.
                                char  *pDstList,
                                //[덮어쓰기] 의 경우는 <true>.
                                //<덮어쓰기:true> 라면 [중복] 되는 [파일] 은 건너뛰고 나머지는 처리.
                                bool   pOverWrite,
                                //[진행대화상자] 를 보일지(true) 말지(false) 선택.
                                bool   pViewDialog,
                                //사용하지 않는 경우는 NULL.
                                bool  *pStop);

//}

//[API:Files_MoveEx]
//{
    //[2020.12.13.일][완료]
    int __fastcall Files_MoveEx(//[출발지:목록] 으로 반드시 [1행:1파일] 로 기술.
                                char  *pSrcList,
                                //[도착지:목록] 으로 반드시 [1행:1파일] 로 기술.
                                char  *pDstList,
                                //[덮어쓰기] 의 경우는 <true>.
                                //<덮어쓰기:true> 라면 [중복] 되는 [파일] 은 건너뛰고 나머지는 처리.
                                bool   pOverWrite,
                                //[진행대화상자] 를 보일지(true) 말지(false) 선택.
                                bool   pViewDialog,
                                //사용하지 않는 경우는 NULL.
                                bool  *pStop);

//}

//[API:Dir_CopyEx]
//{
    //[2020.12.13.일][완료]
    int __fastcall Dir_CopyEx(//출발지 경로(반드시 끝에 '\' 이 붙어 있어야 함).
                              char  *pSrcDir,
                              //도착지 경로(반드시 끝에 '\' 이 붙어 있어야 함).
                              char  *pDstDir,
                              //[덮어쓰기] 의 경우는 <true>.
                              //<덮어쓰기:true> 라면 [중복] 되는 [빈 폴더/파일] 은 건너뛰고 나머지는 처리.
                              bool   pOverWrite,
                              //[진행대화상자] 를 보일지(true) 말지(false) 선택.
                              bool   pViewDialog,
                              //사용하지 않는 경우는 NULL.
                              bool  *pStop);

//}

//[API:Dir_MoveEx]
//{
    //[2020.12.22.화][완료]
    int __fastcall Dir_MoveEx(//출발지 경로(반드시 끝에 '\' 이 붙어 있어야 함).
                              char  *pSrcDir,
                              //도착지 경로(반드시 끝에 '\' 이 붙어 있어야 함).
                              char  *pDstDir,
                              //[덮어쓰기] 의 경우는 <true>.
                              //<덮어쓰기:true> 라면 [중복] 되는 [빈 폴더/파일] 은 건너뛰고 나머지는 처리.
                              bool   pOverWrite,
                              //[진행대화상자] 를 보일지(true) 말지(false) 선택.
                              bool   pViewDialog,
                              //사용하지 않는 경우는 NULL.
                              bool  *pStop);

//}





#endif
