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() 可以实现,可是搞了半天还是一头雾水,请大侠们帮一下我啊,最好能写一点儿代码,万分感谢!
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() 可以实现,可是搞了半天还是一头雾水,请大侠们帮一下我啊,最好能写一点儿代码,万分感谢!
begin
if pmuo(APt1)^.hsgs > pmuo(APt2)^.hsgs then
Result := 1
else
Result := -1;
end;使用时:muolist.sort(ListSort);
注意:pmuo和muo的定义范围修改为全局定义,不要放到一个过程里面定义!
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.多谢这位兄拔剑相助,不过我还没有搞定,能不能再帮我看一下上面代码是哪里出了问题?