对tlist中的结构进行多项排序

本文介绍了如何对tlist中的结构数据进行多重排序。通过将排序字段转换为字符串并合并,然后根据合并后的字符串进行比较排序。示例展示了对姓名、性别和年龄的排序,帮助初学者理解此类排序方法。
摘要由CSDN通过智能技术生成

  本文章来源于一个网友的提问如下:
    我有一些数据,保存在tlist中,每项是个结构,如何在对一项排序的基础上,继续排序
    
排序前
张三   男     25
王婆   女     24
李四   男     32
王婆2   女   27
王二   男     28

排序以后
张三   男     25
王二   男     28
李四   男     32
王婆   女     24
王婆2   女   27

 现在整理一下,从新提出来,希望给初学者一点帮助,通过分析
既然是要排序,那么要排的东西应该可以转换为字符串,既然可以转换为字符串,那么我们就可以通过将所有要排的字段全部转换为字符串之后合并为一个字符串,然后比较这个合并后的字符串进行排序则可 ,所以我们可以定义一个函数如下:

DelphiCode:
procedure   Sort(List:   TList;isArc:   boolean);  {isArc指定是升序还是降序}
var
  i,j:   integer;
  people,People2,temp:   pPeoPle;
  tempstr1,tempstr2:   string;
begin
    for   i   :=   0   to   List.Count   -   1   do
    begin
        for   j   :=   i   +   1   to   List.Count   -   1   do
        begin
            People   :=   List.Items[i];
            tempstr1   :=   people^.Name   +   '   '   +   people^.Sex   +   '   '   +   inttostr(people^.Age);
            people2   :=   List.Items[j];
            tempstr2   :=   people2^.Name   + '   '+   people2^.Sex 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值