我把一些文件名加入到stringlist中
如1.txt、2.txt、10.txt、1101.txt
它不会按照
1.txt
2.txt
10.txt的方法排序怎么样才能生成这样的结果呀

解决方案 »

  1.   

    tstringlinst里的每个item都可以带个data域,你可以在这里插入一个整数表示排序的规则,不过这多少的自己写点代码才能完成你的需求。
      

  2.   

    这个,自己做排序吧
    因为TstringList.默认是按ascii排序的!
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        slst : TStringList;
        i : Integer;
    begin
        slst := TStringList.Create;    //左边补空格
        slst.Add('    1.txt');
        slst.Add('   10.txt');
        slst.Add('    2.txt');
        //排序
        slst.Sort;
        //读取排序后的结果
        for i:=0 to slst.Count-1 do
        begin
            ShowMessage(Trim(slst.Strings[i]));
        end;    slst.Free;
    end;
      

  4.   

    复制代码的时候有点问题
    slst.Add('  1.txt');
    slst.Add(' 10.txt');
    slst.Add('  2.txt');
      

  5.   

    前面补齐0,然后sorted:=true,然后sorted:=false;(这两句可以写到一块),再通过inttostr(strtoint())把前面的0去掉
      

  6.   

    用TStringList.CustomSort排序,想怎么排就怎么排(自己写的代码进行比较)
      

  7.   

    如果在文件名排列时前面有空格显得不好看,因为它可能是这样的效果:
      1.txt
      2.txt
     03.txt
    111.txt
    而补0则比较好看
    001.txt
    002.txt
    101.txt
    102.txt
    这样你可以将前面的数字字符串转换成整型数组,然后
      

  8.   

    CustomSort
    在CustomSort里面写比较过程