刚转delphi,语言不熟,在论坛上没搜出答案,特请教多维数组排序问题,麻烦给段完整代码:例二维数组,每一行中记录了学生学号、各科单科成绩、总成绩,要求按总成绩排序.

解决方案 »

  1.   

    不是多维数组,就是结构的排序。
      PMyInfo=^TMyInfo;
      TMyInfo=record
        No:integer;
        v1:real;
        vAll:real;
      end;
    var
      lst:TList;function CompareNames(Item1, Item2: Pointer): Integer;
    begin
      Result :=Trunc(PMyInfo(Item1)^.vAll-PMyInfo(Item2)^.vAll);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
        i:integer;
        p:PMyInfo;
    begin
        lst:=TList.Create;    for i:=0 to 9 do
        begin
            new(p);
            p^.vAll:=Random(900);
            p^.No:=i+1;
            lst.Add(p);
        end;    lst.Sort(@CompareNames);
        for i:=0 to lst.Count-1 do
            memo1.Lines.Add(IntToStr(PMyInfo(lst.Items[i])^.No)+',value='+Format('%.2f',[PMyInfo(lst.Items[i])^.vAll]));    lst.Free;
    end;