排序问题 傻子问个傻问题:数组 strlist1 : TStringList; StrList[i] > '0'如何把strlist1 中的值按升序排序,并且值为'0'的在后面。??????? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 傻子问个傻问题:============聪明人回答聪明问题。 :) :)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;//结果======12345000 正常用sort排序肯定是0在前面,而楼主用的是SL.CustomSort(@Compare);自定义排序,所以排序的结果和你Compare的方法有关系 关于fastreport的ChangePaper参数的含义 蛇形矩阵(Pascal) DBGrid里面显示的数据怎么样删除 请问QUICKREPORT中是否可放子报表,象PB的DATAWINDOW一样? 急待解决的问题!(100)分!关于blob字段的? 不吝高分,请教DLL在DELPHI中调用 初学delphi,请帮忙。 急急急急急!!! 实现可能么? 线程能操作内存流吗? 结构体参数怎么赋值 大家来看看这段代码
============
聪明人回答聪明问题。 :) :)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
而楼主用的是SL.CustomSort(@Compare);自定义排序,所以排序的结果和你Compare的方法有关系