Q&A

  • 서브디렉토리와 파일을 찾는 루틴에서 디렉토리가 잡히지 않는군요
'C:'에 있는 서브와 파일을 검색해서 리스트에 출력하는 루틴이 있습니다.

FINDFIRST와 FINDNEXT를 이용하였습니다.

다른건 다 잘나오는데..

Program Files디렉토리(이름이 맞나?) 이 디렉토리가 파일로 인식되거든요.

왜 그러케 되는지....제생각엔 공백땜에 그런거 같은데..

해결방법은 없는지...갈쳐주세요..

답변 부탁드립니다.







3  COMMENTS
  • Profile
    유시니 1999.07.30 11:43
    이용일 께서 말씀하시기를...

    > 'C:'에 있는 서브와 파일을 검색해서 리스트에 출력하는 루틴이 있습니다.

    > FINDFIRST와 FINDNEXT를 이용하였습니다.

    > 다른건 다 잘나오는데..

    > Program Files디렉토리(이름이 맞나?) 이 디렉토리가 파일로 인식되거든요.

    > 왜 그러케 되는지....제생각엔 공백땜에 그런거 같은데..

    > 해결방법은 없는지...갈쳐주세요..

    > 답변 부탁드립니다.

    >

    >

    >

    이렇게 해보세요.

    -------------------------------------------

    procedure TForm1.FormCreate(Sender: TObject);

    var

    R_FC : integer;

    SearchRec : TSearchRec;



    begin

    //dir search

    R_FC := FindFirst('c:' + '*.*', faDirectory, SearchRec);

    while R_FC = 0 do

    begin

    if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') and (SearchRec.Attr = 16) then

    TreeView1.Items.AddChildFirst(nil,'' + SearchRec.Name);

    R_FC := FindNext(SearchRec);

    end;



    //file search

    R_FC := FindFirst('c:' + '*.*', faArchive, SearchRec);

    while R_FC = 0 do

    begin

    if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then

    TreeView1.Items.AddChild(nil,SearchRec.Name);

    R_FC := FindNext(SearchRec);

    end;



    FindClose(SearchRec);



    end;





    -----------------------------------

    먼저 디렉토리를 검색하는 루틴에서 (SearchRec.Attr = 16) 부분이

    검색한 것중 디렉토리를 구분한다고 볼수 있죠.

    그리고 파일은 FindFirst('c:' + '*.*', faArchive, SearchRec) 에서

    faArchive 부분이 디렉토리를 검색에서 제외 시키죠...

  • Profile
    이용일 1999.07.30 21:21
    유시니 께서 말씀하시기를...

    > 이렇게 해보세요.

    > -------------------------------------------

    > procedure TForm1.FormCreate(Sender: TObject);

    > var

    > R_FC : integer;

    > SearchRec : TSearchRec;

    >

    > begin

    > //dir search

    > R_FC := FindFirst('c:' + '*.*', faDirectory, SearchRec);

    > while R_FC = 0 do

    > begin

    > if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') and (SearchRec.Attr = 16) then

    > TreeView1.Items.AddChildFirst(nil,'' + SearchRec.Name);

    > R_FC := FindNext(SearchRec);

    > end;

    >

    > //file search

    > R_FC := FindFirst('c:' + '*.*', faArchive, SearchRec);

    > while R_FC = 0 do

    > begin

    > if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then

    > TreeView1.Items.AddChild(nil,SearchRec.Name);

    > R_FC := FindNext(SearchRec);

    > end;

    >

    > FindClose(SearchRec);

    >

    > end;

    >

    >

    > -----------------------------------

    > 먼저 디렉토리를 검색하는 루틴에서 (SearchRec.Attr = 16) 부분이

    > 검색한 것중 디렉토리를 구분한다고 볼수 있죠.

    > 그리고 파일은 FindFirst('c:' + '*.*', faArchive, SearchRec) 에서

    > faArchive 부분이 디렉토리를 검색에서 제외 시키죠...



    님의 말씀대로 했는데두...그 디렉토리는 인식이 안되는군요..그렇다면..

    그 디렉토리(Program Files)를 디렉토리를 인식하지 못한다는말인가?

    답변부탁드립니다.



  • Profile
    유시니 1999.08.06 11:56
    이용일 께서 말씀하시기를...

    > 유시니 께서 말씀하시기를...

    > > 이렇게 해보세요.

    > > -------------------------------------------

    > > procedure TForm1.FormCreate(Sender: TObject);

    > > var

    > > R_FC : integer;

    > > SearchRec : TSearchRec;

    > >

    > > begin

    > > //dir search

    > > R_FC := FindFirst('c:' + '*.*', faDirectory, SearchRec);

    > > while R_FC = 0 do

    > > begin

    > > if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') and (SearchRec.Attr = 16) then

    > > TreeView1.Items.AddChildFirst(nil,'' + SearchRec.Name);

    > > R_FC := FindNext(SearchRec);

    > > end;

    > >

    > > //file search

    > > R_FC := FindFirst('c:' + '*.*', faArchive, SearchRec);

    > > while R_FC = 0 do

    > > begin

    > > if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then

    > > TreeView1.Items.AddChild(nil,SearchRec.Name);

    > > R_FC := FindNext(SearchRec);

    > > end;

    > >

    > > FindClose(SearchRec);

    > >

    > > end;

    > >

    > >

    > > -----------------------------------

    > > 먼저 디렉토리를 검색하는 루틴에서 (SearchRec.Attr = 16) 부분이

    > > 검색한 것중 디렉토리를 구분한다고 볼수 있죠.

    > > 그리고 파일은 FindFirst('c:' + '*.*', faArchive, SearchRec) 에서

    > > faArchive 부분이 디렉토리를 검색에서 제외 시키죠...

    >

    > 님의 말씀대로 했는데두...그 디렉토리는 인식이 안되는군요..그렇다면..

    > 그 디렉토리(Program Files)를 디렉토리를 인식하지 못한다는말인가?

    > 답변부탁드립니다.

    >



    답변이 늦어 미안합니다. 휴가를 다녀와서요...

    전체디렉토리가 아니고 특정 디렉토리가 인식이 않된다는 말씀이신가요?

    그러다고 가정하면 그 폴더가 숨김속성이 있어서 일것입니다.

    그러면 FindFirst의 두번째 인자를 faAnyFile로 바꾸면 나타날 것입니다.

    제가 제대로 질문을 이해했는지 모르겠네요.