本人在TList中增加N个对象。给对象为
T my = class(tobject)
name: string;
age: string;
constructor create;
destructor destroy; override;
end;
.......
list.add(my)
.....za在加了N个my对象后,我想根据需要,让list以name,或者age排序,可是这个list.sort()怎么那么难用啊。谁救救我啊???
T my = class(tobject)
name: string;
age: string;
constructor create;
destructor destroy; override;
end;
.......
list.add(my)
.....za在加了N个my对象后,我想根据需要,让list以name,或者age排序,可是这个list.sort()怎么那么难用啊。谁救救我啊???
function CompareNames(Item1, Item2: Pointer): Integer;
begin
Result := CompareText((Item1 as my).Name, (Item2 as my).Name);
end;function CompareAge(Item1, Item2: Pointer): Integer;
begin
Result := CompareText((Item1 as my).age, (Item2 as my).age);
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
List1.Sort(@CompareNames);//按照姓名排列
List1.Sort(@CompareAge);///按照年龄排列
end;
Sort带比较用的函数入口
function CompareD(Item1, Item2: Pointer): Integer;
begin
Result := ...比较过程
end;Sort(@CompareD)就是这样具体看Help的
是不是TList也得从新写啊?
就用系统自己提供的类TList。
function CompareNames(Item1, Item2: Pointer): Integer;
begin
Result := CompareText((Item1 as my).Name, (Item2 as my).Name);
end;function CompareAge(Item1, Item2: Pointer): Integer;
begin
Result := CompareText((Item1 as my).age, (Item2 as my).age);
end;
把这两个写上就可以了?
使用的时候下面这样
List1.Sort(@CompareNames);//按照姓名排列
List1.Sort(@CompareAge);///按照年龄排列