|
포럼 참고해서 만들어 봤습니다.
나름대로 잘 돌아가는데...
상위 디렉토리나 파일과 하위디렉토리 파일간에 구분이 안가네요 ^^;;
[DIR]windows
[DIR] Program Files
[DIR]Alzip
[DIR]Temp
Alzip.exe
[DIR]Program Files
이런식으로 탭키로 구분을 해주거나
아님 Memo말고 TreeView같은걸로 더 쉽게 해줄 방법이 없을까요?
void __fastcall TForm1::GetDirView(AnsiString Dir)
{
TSearchRec sr;
int iAttributes = 0;
AnsiString iDir; //GetDirView()내에서만 사용할 패스변수 선언
iAttributes |= faReadOnly * 0; //파일 옵션
iAttributes |= faHidden * 0;
iAttributes |= faSysFile * 0;
iAttributes |= faVolumeID * 0;
iAttributes |= faDirectory * 0;
iAttributes |= faArchive * 0;
iAttributes |= faAnyFile * 1;
iDir = Dir; //인자로 받아온 패스를 iDir에 저장
int len=iDir.Length();
if(iDir[len]=='\\') //iDir의 마지막 문자가 '\\'인지 아닌지
iDir += "*.*";
else
iDir += "\\*.*";
if (FindFirst(iDir, iAttributes, sr) == 0) //찾는 파일이 있으면..
{
do{
if ((sr.Attr & faDirectory) == 0)//찾은 파일이 디렉토리가 아니면..
Memo1->Lines->Add(sr.Name);
else{
if (sr.Name != "." && sr.Name != ".."){ // ".", ".." 두 디렉토리는 출력에서 제외시킴
Memo1->Lines->Add("[DIR] "+sr.Name);
AnsiString subDir;
subDir = Dir;
subDir += sr.Name;
GetDirView(subDir+"\\");
}
}
}while(FindNext(sr) == 0); //다음 파일찾기, 다음찾은 파일이 없을때까지 do-while문 반복
}
FindClose(sr);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Clear();
GetDirView("D:\\");
}
//---------------------------------------------------------------------------
|