VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1111|回复: 3

排序问题

[复制链接]

2

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-14 08:00:01 | 显示全部楼层 |阅读模式
傻子问个傻问题:
数组 strlist1 : TStringList; StrList[i] > '0'
如何把strlist1 中的值按升序排序,并且值为'0'的在后面。???????
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-4-12 13:45:01 | 显示全部楼层
strlist1.sort
回复

使用道具 举报

0

主题

25

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-4-25 14:00:01 | 显示全部楼层
傻子问个傻问题:
============
聪明人回答聪明问题。 :) :)

function Compare(List: TStringList; Index1, Index2: Integer): Integer;
begin
  if List[Index1] = '0' then
    if List[Index2] <> '0' then
      Result := 1
    else
      Result := 0
  else
    if List[Index2] = '0' then
      Result := -1
    else
      Result := CompareText(List[Index1], List[Index2]);
end;

procedure TFormDemo.ButtonDemoClick(Sender: TObject);
var
  SL: TStringList;
begin
  SL := TStringList.Create;
  SL.Add('0');
  SL.Add('4');
  SL.Add('1');
  SL.Add('0');
  SL.Add('0');
  SL.Add('5');
  SL.Add('3');
  SL.Add('2');
  SL.CustomSort(@Compare);
  ListBox.Items := SL; //看看结果
end;

//结果
======
1
2
3
4
5
0
0
0

回复

使用道具 举报

0

主题

14

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-4-28 15:30:01 | 显示全部楼层
正常用sort排序肯定是0在前面,
而楼主用的是SL.CustomSort(@Compare);自定义排序,所以排序的结果和你Compare的方法有关系
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表