unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private  public  end;var
  Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
type
  pmuo=^muo;
  muo = record
  muoname:string;
  hsgs:integer;
end;var
  muoList: TList;
  amuo:pmuo;begin
  muolist:=TList.Create;
  New(amuo);
  amuo.muoname:='d:\001.bmp';
  amuo.hsgs:=3;
  muolist.Add(amuo);
  New(amuo);
  amuo.muoname:='d:\002.bmp';
  amuo.hsgs:=2;
  muolist.Add(amuo);
end;end.现在想根据muolist各项的 的hsgs字段进行排序,我只知首muolist.sort() 可以实现,可是搞了半天还是一头雾水,请大侠们帮一下我啊,最好能写一点儿代码,万分感谢!

解决方案 »

  1.   

    function ListSort(APt1, APt2: Pointer): Integer;
    begin
      if pmuo(APt1)^.hsgs > pmuo(APt2)^.hsgs then
        Result := 1
      else
        Result := -1;
    end;使用时:muolist.sort(ListSort);
    注意:pmuo和muo的定义范围修改为全局定义,不要放到一个过程里面定义!
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private  public  end;var
      Form1: TForm1;
      type
      pmuo=^muo;
      muo = record
      muoname:string;
      hsgs:integer;
      end;implementation{$R *.dfm}
    function ListSort(APt1, APt2: Pointer): Integer;
    begin
      if pmuo(APt1)^.hsgs > pmuo(APt2)^.hsgs then
        Result := 1
      else
        Result := -1;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      muoList: TList;
      amuo:pmuo;
      tmpmuo:pmuo;begin
      muolist:=TList.Create;
      New(amuo);
      amuo.muoname:='d:\001.bmp';
      amuo.hsgs:=3;
      muolist.Add(amuo);
      New(amuo);
      amuo.muoname:='d:\002.bmp';
      amuo.hsgs:=2;
      muolist.Add(amuo);  muolist.sort(ListSort);
      tmpmuo:=muolist.Items[0];
      showmessage(tmpmuo.muoname);end;
    end.多谢这位兄拔剑相助,不过我还没有搞定,能不能再帮我看一下上面代码是哪里出了问题?