if (FindFirst(Ustr+'*.*', faAnyFile, SearchRec)=0) then
    begin
     repeat
      if IsValidDir(SearchRec)=1 then  showmessage('2') else showmessage('1');
     until (FindNext(SearchRec) <> 0);
    end;
    FindClose(SearchRec);我只要得到一级目录和文件就可以了,不用递归,但是上面这个过程为什么只能取得当前目录下的一个目录?我里面有2个目录和2个文件的

解决方案 »

  1.   

    function IsValidDir(SearchRec: TSearchRec): integer;
    begin
      if (SearchRec.Attr <> 16) and  (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then Result:=0
      else
        if (SearchRec.Attr = 16) and  (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then Result:=1
      else Result:=2;
    end;
    我输出名称的时候看到的是我要查找的目录名,不是这个目录里面的名字,试了好几个范例结果都是一样
      

  2.   

    if (FindFirst(Ustr+'*.*', faAnyFile, SearchRec)=0) then
        begin
         repeat
          showmessage(SearchRec.Name);
         until (FindNext(SearchRec) <> 0);
        end;
        FindClose(SearchRec);直接这样是显示的Ustr中要查找的目录名,不能显示所有这个目录下面的名称,郁闷
      

  3.   

    if (FindFirst(ustr+'*.*', faAnyFile, SearchRec)=0) then
        begin
            memo1.Lines.Clear;
            repeat
                    memo1.Lines.Add(searchrec.Name);
            until (FindNext(SearchRec) <> 0);
        end;
    end;
    FindClose(SearchRec);
      

  4.   

    呵呵,我知道了,ustr最后一个字符应该是\,不然就是你那种情况。