|
재귀호출도 가능하겠고 push-pop 알고리즘(?)을 사용하시면 될듯합니다.
우연잖게 바로위 답글에 제가 해논 push-pop 이 있군요.^^
재귀호출을 하신다면
void test(AnsiString path,int nn)
{
if(nn>1000) return; //너무많은 호출이있으면(깊이) stack overflow 가 일어날지 모르니까...
path 에대한 화일 읽고 처리
int n=path에 있는 서브디렉토리 갯수
for(int i=0;i<n;i++){
test(찾은서브디렉토리[i],nn+1);
}
}
void go()
{
test(루트디렉토리,0);
}
이렇게 하면 될듯합니다.(태스트없이 그냥 쓴것임)
push-pop으로 한다면
void go()
{
push("루트디렉토리");
while(true){
path=pop() // 최근의 한개의 디렉토리를 꺼내온다,
까내올게 없다면 break;
path 에대한 화일 읽고 처리
int n=path에 있는 서브디렉토리 갯수
for(int i=0;i<n;i++){
push(찾은서브디렉토리[i]);
}
}
}
push-pop는 다들 아시겠지만 TStringList 를 사용하면 되겠군요
push 는 리스트에 제일 마지막에 넣는거고
pop 은 제일 마지막에 넣은걸 빼오는 겁니다.
모라 님이 쓰신 글 :
: ftp에 접속 안에 폴더를 일일이 들어가면서
:
: 화일의 유무의 정보를 화일로 저장 할려고 합니다.
:
: 근데 화일로 저장 한다는건 나중 문제이고...
:
: 아시다시피 디렉이 트리구조인데 어떻게 일일이 다 들어가 볼수가 있죠?
:
: 막상 쉽다고 생각했는데 어렵네요.
:
: 재귀호출을 이용하면 될 것 같은데 답답하네요.
:
: 도움을 바랍니다 :-)
|