这个文本文件如何排序?
按第2列数值由大到小排序,文本文件内容为:
测试1,14.1,9/9/9/,0/0/0/
测试5,9.6,1/1/1/0/,0/0/0/0/
测试4,11.7,4/3/4/4/,0/3/0/0/
测试3,14.7,8/8/8/8/,1/1/2/9/排序后变为
测试3,14.7,8/8/8/8/,1/1/2/9/
测试1,14.1,9/9/9/,0/0/0/
测试4,11.7,4/3/4/4/,0/3/0/0/
测试5,9.6,1/1/1/0/,0/0/0/0/

解决方案 »

  1.   

    用TSTRINGLIST读出来,然后判断,写到NEW的TSTRINGLSIT里
      

  2.   

    逐行读出,把它分别写到三个字符串里,然后pos出第二个数值的大小。然后根据数值大小再重新写到文本文件里去。
      

  3.   

    用tp写得
    要用得话
    把过程readin,sort考出来就够了
    调用后排好序的字符串放在a中,其中a[].s是原字符串,a[].v是关键字type node=record
                s:string;
                v:real;
              end;var a:array[1..100] of node;
        len:integer;function value(s:string):real;  {返回关键字,就是第2列数}
    var i,code:integer;
        temp:real;begin
      while s[1]<>',' do delete(s,1,1);
      delete(s,1,1);
      i:=1;
      while s[i]<>',' do inc(i);
      delete(s,i,length(s)-i+1);
      val(s,temp,code);
      value:=temp;
    end;procedure readin;  {读入}
    var fin:text;
        s:string;
    begin
      assign(fin,'data.in');
      reset(fin);
      while not eof(fin) do begin
        readln(fin,s);
        inc(len);
        a[len].s:=s;
        a[len].v:=value(s);
      end;
    end;procedure sort(l,r:integer);   {快速排序}
    var i,j:integer;
        x:real;
        temp:node;
    begin
      i:=l;j:=r;x:=a[i].v;
      while i<j do begin
        while a[i].v>x do inc(i);
        while x>a[j].v do dec(j);
        if i<=j then begin
          temp:=a[i];a[i]:=a[j];a[j]:=temp;
          inc(i);dec(j);
        end;
      end;
      if (l<j) then sort(l,j);
      if (i<r) then sort(i,r);
    end;procedure out;  {输出}
    var i:integer;
    begin
      for i:=1 to len do
        writeln(a[i].s);
    end;begin
      readin;
      sort(1,len);
      out;
    end.