这个函数没有办法排序,你可以在TREEVIEW,LISTVIEW中排序。

解决方案 »

  1.   

    但是我没用treeview啊,我是用做别的用处的,有什么办法吗?
      

  2.   

    没有的,我是将取出来的放到一个文本文件中procedure GetIEFavoriteToXML(var XMLStr:string;var index:integer;FavDir:string);
    var
     SR: TSearchRec;
     FileAttr: Integer;
    begin
    FileAttr := faDirectory;
    FindFirst(FavDir  + '\*.*', FileAttr, SR);
    While FindNext(SR) = 0 do
     begin
     if (SR.Name <> '.') and (SR.Name <> '..') then
      begin
      index:=index+1;
      if DirectoryExists(FavDir + '\' + SR.Name) then
       begin
       XMLStr:=XMLStr + '<link type="dir" index="' + IntToStr(index) + '" name="' + SR.Name + '">' + br;
       GetIEFavoriteToXML (XMLStr,index,FavDir + '\' + SR.Name);
       XMLStr:=XMLStr + '</link>' + br;
       end
      else
       begin
       XMLStr:=XMLStr + ' <link type="url" index="' + IntToStr(index) + '" name="' + copy(SR.Name,1,length(SR.Name)-4) + '" path="' + FavDir + '\' + SR.Name + '" />' + br;
       end;
      end;
     end;
    FindClose(SR);
    end;最终的结果是生成一个XML文件(别笑我的方法土,能用就可以了嘛 :D)
      

  3.   

    用TStringList过渡一下嘛。
    把找到的文件名保存到StringList中,设置TStringList.Sorted=true。
    全部取出TStringList.Text;
    一个个取TStringList.Strings[i](i=0 ~ TStringList.count-1)。
      

  4.   

    问题是我是调用递归做的,如果取出的是目录,就进入此目录再取,目录出现的位置不定,有可能在文件前,有可能在文件后,怎么做呢?procedure GetIEFavoriteToXML(var XMLStr:string;FavDir:string);
    var
      SR: TSearchRec;
      FileAttr: Integer;
    begin
    FileAttr := faDirectory;
    FindFirst(FavDir  + '\*.*', FileAttr, SR);
    While FindNext(SR) = 0 do
    begin
    if (SR.Name <> '.') and (SR.Name <> '..') then
      begin
      if DirectoryExists(FavDir + '\' + SR.Name) then   //如果该次查找结果是目录
      begin
      XMLStr:=XMLStr + '<link type="dir" name="' + SR.Name + '">' + br;
      GetIEFavoriteToXML (XMLStr,FavDir + '\' + SR.Name);
      XMLStr:=XMLStr + '</link>' + br;
      end
    else                   //如果该次查找结果是文件
      begin
      XMLStr:=XMLStr + ' <link type="url" name="' + SR.Name '" />' + br;
      end;
      end;
    end;
    FindClose(SR);
    end;而且我希望将所有目录排在文件前面,更困难了